@swapkit/wallet-hardware 6.2.0 → 6.3.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.
- package/dist/THIRD_PARTY_LICENSES.md +4 -4
- package/dist/{chunk-rydhx4se.js → chunk-0k1b2ddn.js} +3 -3
- package/dist/{chunk-rydhx4se.js.map → chunk-0k1b2ddn.js.map} +2 -2
- package/dist/{chunk-j3n6fbqh.js → chunk-2tzsz8f3.js} +4 -4
- package/dist/{chunk-j3n6fbqh.js.map → chunk-2tzsz8f3.js.map} +1 -1
- package/dist/{chunk-2jddegc1.js → chunk-410fpx61.js} +4 -4
- package/dist/{chunk-2jddegc1.js.map → chunk-410fpx61.js.map} +1 -1
- package/dist/chunk-8mkdjmw2.js +4 -0
- package/dist/chunk-8mkdjmw2.js.map +10 -0
- package/dist/{chunk-7kwtpk70.js → chunk-96p7njae.js} +3 -3
- package/dist/{chunk-7kwtpk70.js.map → chunk-96p7njae.js.map} +2 -2
- package/dist/{chunk-g6rrzxcx.js → chunk-97nsp4z6.js} +3 -3
- package/dist/{chunk-g6rrzxcx.js.map → chunk-97nsp4z6.js.map} +1 -1
- package/dist/{chunk-kaw35ae2.js → chunk-9a9gn4pb.js} +3 -3
- package/dist/{chunk-a47dwwv6.js.map → chunk-9a9gn4pb.js.map} +1 -1
- package/dist/chunk-a39rm9nv.js +4 -0
- package/dist/{chunk-42xrtarj.js.map → chunk-a39rm9nv.js.map} +5 -5
- package/dist/chunk-c8mwf9cn.js +4 -0
- package/dist/{chunk-kaw35ae2.js.map → chunk-c8mwf9cn.js.map} +1 -1
- package/dist/{chunk-b7htg03t.js → chunk-dhhmywmb.js} +4 -4
- package/dist/{chunk-b7htg03t.js.map → chunk-dhhmywmb.js.map} +1 -1
- package/dist/{chunk-x28a37pz.js → chunk-dsa641rq.js} +3 -3
- package/dist/{chunk-x28a37pz.js.map → chunk-dsa641rq.js.map} +2 -2
- package/dist/{chunk-7rbvcts9.js → chunk-grj9nvte.js} +3 -3
- package/dist/{chunk-7rbvcts9.js.map → chunk-grj9nvte.js.map} +1 -1
- package/dist/{chunk-tecse0bj.js → chunk-napm4102.js} +3 -3
- package/dist/{chunk-tecse0bj.js.map → chunk-napm4102.js.map} +1 -1
- package/dist/{chunk-a47dwwv6.js → chunk-nb08g045.js} +3 -3
- package/dist/{chunk-sp3dq5hr.js.map → chunk-nb08g045.js.map} +1 -1
- package/dist/chunk-npe2r2ge.js +4 -0
- package/dist/{chunk-tm5gk51g.js.map → chunk-npe2r2ge.js.map} +1 -1
- package/dist/chunk-p9mwkgye.js +4 -0
- package/dist/{chunk-s2akss77.js.map → chunk-p9mwkgye.js.map} +14 -12
- package/dist/{chunk-b093ajcq.js → chunk-qjp8j8e5.js} +3 -3
- package/dist/{chunk-b093ajcq.js.map → chunk-qjp8j8e5.js.map} +1 -1
- package/dist/{chunk-71kfnwdp.js → chunk-r1fk1sx9.js} +3 -3
- package/dist/{chunk-71kfnwdp.js.map → chunk-r1fk1sx9.js.map} +1 -1
- package/dist/{chunk-5xg0xc0g.js → chunk-ta7bqmy3.js} +3 -3
- package/dist/{chunk-5xg0xc0g.js.map → chunk-ta7bqmy3.js.map} +1 -1
- package/dist/{chunk-545s1tsc.js → chunk-tgvgr630.js} +3 -3
- package/dist/{chunk-545s1tsc.js.map → chunk-tgvgr630.js.map} +2 -2
- package/dist/{chunk-035dayv6.js → chunk-v8x9ptxs.js} +3 -3
- package/dist/{chunk-035dayv6.js.map → chunk-v8x9ptxs.js.map} +1 -1
- package/dist/{chunk-mzan0m09.js → chunk-wm89desc.js} +20 -20
- package/dist/{chunk-mzan0m09.js.map → chunk-wm89desc.js.map} +12 -10
- package/dist/{chunk-a6vcbcyd.js → chunk-wtyhjt5e.js} +3 -3
- package/dist/{chunk-a6vcbcyd.js.map → chunk-wtyhjt5e.js.map} +1 -1
- package/dist/{chunk-s5a5v0m1.js → chunk-xskdbz15.js} +3 -3
- package/dist/{chunk-s5a5v0m1.js.map → chunk-xskdbz15.js.map} +2 -2
- package/dist/{chunk-sbebfr50.js → chunk-ytjqb1sd.js} +3 -3
- package/dist/{chunk-sbebfr50.js.map → chunk-ytjqb1sd.js.map} +1 -1
- package/dist/{chunk-ys51wj1c.js → chunk-zbesf7sy.js} +3 -3
- package/dist/{chunk-ys51wj1c.js.map → chunk-zbesf7sy.js.map} +1 -1
- package/dist/keepkey/index.js +2 -2
- package/dist/keepkey/index.js.map +1 -1
- package/dist/ledger/index.cjs +28 -28
- package/dist/ledger/index.cjs.map +28 -24
- package/dist/ledger/index.js +2 -2
- package/dist/ledger/index.js.map +4 -4
- package/dist/trezor/index.cjs +2 -2
- package/dist/trezor/index.cjs.map +5 -4
- package/dist/trezor/index.js +2 -2
- package/dist/trezor/index.js.map +3 -3
- package/dist/types/ledger/clients/zcash.d.ts.map +1 -1
- package/dist/types/trezor/hypercoreSigner.d.ts +22 -0
- package/dist/types/trezor/hypercoreSigner.d.ts.map +1 -0
- package/dist/types/trezor/index.d.ts +2 -2
- package/dist/types/trezor/index.d.ts.map +1 -1
- package/package.json +12 -12
- package/src/ledger/clients/zcash.ts +16 -6
- package/src/ledger/index.ts +2 -2
- package/src/trezor/hypercoreSigner.ts +96 -0
- package/src/trezor/index.ts +72 -16
- package/dist/chunk-42xrtarj.js +0 -4
- package/dist/chunk-s2akss77.js +0 -4
- package/dist/chunk-sp3dq5hr.js +0 -4
- package/dist/chunk-tm5gk51g.js +0 -4
package/dist/ledger/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Ea as D0,Fa as f$,Ga as c0}from"../chunk-b7htg03t.js";import{Ia as y$}from"../chunk-g6rrzxcx.js";import{Ja as O$}from"../chunk-j3n6fbqh.js";import{ae as H}from"../chunk-kaw35ae2.js";import{hex as K8}from"@scure/base";import{AssetValue as CY,Chain as q,derivationPathToString as v0,FeeOption as R8,filterSupportedChains as vY,getUTXOScriptTypeForPath as PY,NetworkDerivationPath as SY,SwapKitError as t,UTXOScriptType as C0,WalletOption as N0}from"@swapkit/helpers";import{addInputsAndOutputs as xY,assertDerivationIndex as w8,compileMemo as mY,createHDWalletHelpers as lY,getNetworkForChain as f8,getScriptTypeForAddress as gY,getUTXOAccountIndexFromPath as e0,getUTXOAccountPath as k8,getUTXOAddressPath as U8,getUtxoApi as b8}from"@swapkit/toolboxes/utxo";import{createWallet as hY,getWalletSupportedChains as uY}from"@swapkit/wallet-core";import{match as U0,P as O8}from"ts-pattern";import{SwapKitError as Z0}from"@swapkit/helpers";import{filter as c8,firstValueFrom as J$,map as d8,timeout as p8}from"rxjs";import{SwapKitError as A0}from"@swapkit/helpers";import{match as Y$}from"ts-pattern";var x0={Completed:"completed",Error:"error",Stopped:"stopped"},T={None:"none",SignTransaction:"sign-transaction",VerifyAddress:"verify-address"},C8=new Set(["6985","5501"]),$0=["6986"],v8=new Set(["5515"]),P8=new Set(["6511","6807","6d00","6e00"]),S8=new Set(["DeviceDisconnectedBeforeSendingApdu","DeviceDisconnectedWhileSendingError","DeviceNotRecognizedError","DeviceSessionNotFound","NoAccessibleDeviceError","ReconnectionFailedError"]),x8=new Set(["DisconnectedDevice","DisconnectedDeviceDuringOperation"]),m8=new Set(["UserRefusedOnDevice"]),l8=4,g8=/^(?:0x)?([0-9a-f]{4})$/i;function h8($){let Y=[],J=$;while(Y.length<l8&&typeof J==="object"&&J!==null){let j=J;Y.push(j),J=j.originalError}return Y}function u8({errorCode:$,statusCode:Y}){let J=typeof $==="string"?g8.exec($)?.[1]:void 0;if(J)return J.toLowerCase();return typeof Y==="number"?Y.toString(16).padStart(4,"0"):void 0}function p($,{userRefusedStatusWords:Y=[]}={}){let J=h8($),j=J.find((z)=>z instanceof A0);if(j)return j;let Q=J.flatMap(({_tag:z})=>typeof z==="string"?[z]:[]),Z=J.flatMap(({name:z})=>typeof z==="string"?[z]:[]),G=J.map(u8).find((z)=>z!==void 0),X=J.map((z)=>z.message).filter((z)=>typeof z==="string"&&z.length>0).at(-1),F=new Set([...C8,...Y]),B=Y$({errorNames:Z,errorTags:Q,statusWord:G}).when(({errorNames:z,errorTags:W,statusWord:V})=>W.includes("RefusedByUserDAError")||z.some((M)=>m8.has(M))||!!V&&F.has(V),()=>"wallet_connection_rejected_by_user").when(({errorTags:z,statusWord:W})=>z.includes("DeviceLockedError")||!!W&&v8.has(W),()=>"wallet_ledger_device_locked").when(({errorTags:z,statusWord:W})=>z.includes("UnsupportedApplicationDAError")||!!W&&P8.has(W),()=>"wallet_ledger_app_not_open").when(({errorNames:z,errorTags:W})=>W.some((V)=>S8.has(V))||z.some((V)=>x8.has(V)),()=>"wallet_ledger_connection_error").otherwise(()=>"wallet_ledger_transport_error");return new A0({errorKey:B,info:{errorTag:Q[0],message:X,statusWord:G}},$)}function E({action:$,onDeviceActionState:Y,userRefusedStatusWords:J}){return new Promise((j,Q)=>{let Z;try{Z=$().observable}catch(B){Q(p(B,{userRefusedStatusWords:J}));return}let G=!1,X;function F(B){if(G)return;G=!0,X?.unsubscribe(),B()}if(X=Z.subscribe({complete:()=>{F(()=>Q(new A0("wallet_ledger_invalid_response")))},error:(B)=>{F(()=>Q(p(B,{userRefusedStatusWords:J})))},next:(B)=>{try{Y?.(B)}catch(z){}Y$(B).with({status:x0.Completed},({output:z})=>F(()=>j(z))).with({status:x0.Error},({error:z})=>F(()=>Q(p(z,{userRefusedStatusWords:J})))).with({status:x0.Stopped},()=>F(()=>Q(new A0("wallet_ledger_connection_error")))).otherwise(()=>{return})}}),G)X.unsubscribe()})}var o8=1000,m0,h;function s8(){if(typeof navigator>"u"||!("hid"in navigator))return Promise.reject(new Z0("wallet_ledger_webhid_not_supported"));return Promise.all([import("../chunk-a47dwwv6.js"),import("../chunk-545s1tsc.js")]).then(([{DeviceManagementKitBuilder:$},{webHidTransportFactory:Y}])=>new $().addTransport(Y).build()).catch(($)=>{if(m0=void 0,$ instanceof Z0)throw $;throw new Z0("wallet_ledger_connection_error",$)})}function j$(){return m0??=s8(),m0}function l0(){return j$().then(($)=>Q$({dmk:$}))}function i8($){return typeof $==="object"&&$!==null&&"_tag"in $&&$._tag==="DeviceSessionNotFound"}function n8({dmk:$,sessionId:Y}){try{return $.getConnectedDevice({sessionId:Y}),!0}catch(J){return!1}}async function r8({sessionPromise:$}){let Y=$;try{let J=await Y;if(n8(J))return J;if(h===Y)h=l0();return h??=l0(),Y=h,await Y}catch(J){if(h===Y)h=void 0;if(J instanceof Z0)throw J;throw new Z0("wallet_ledger_connection_error",J)}}async function a8(){let $=typeof navigator>"u"?void 0:navigator.hid;if(typeof $?.getDevices!=="function")return!1;try{let[Y,{LEDGER_VENDOR_ID:J}]=await Promise.all([$.getDevices(),import("../chunk-a47dwwv6.js")]);return Y.some(({vendorId:j})=>j===J)}catch(Y){return!1}}async function t8({dmk:$}){if(!await a8())return;try{return await J$($.listenToAvailableDevices({}).pipe(d8(([Y])=>Y),c8((Y)=>Y!==void 0),p8({first:o8})))}catch(Y){return}}async function Q$({dmk:$}){let Y=!1;try{let J=await t8({dmk:$});if(J)return{dmk:$,sessionId:await $.connect({device:J})};let j=$.startDiscovering({});Y=!0;let Q=await J$(j),Z=await $.connect({device:Q});return{dmk:$,sessionId:Z}}catch(J){if(J instanceof Z0)throw J;throw new Z0("wallet_ledger_connection_error",J)}finally{if(Y)try{await $.stopDiscovering()}catch(J){}}}function r({dmk:$}={}){if($)return Q$({dmk:$});return h??=l0(),r8({sessionPromise:h})}function Y0({build:$,dmkSession:Y}){let J;return async function(){let Q=Y??await r();if(J?.session.dmk!==Q.dmk||J.session.sessionId!==Q.sessionId){let Z=Promise.resolve().then(()=>$(Q));J={session:Q,signer:Z};let G=J;Z.catch(()=>{if(J===G)J=void 0})}return J.signer}}function Z$(){let $=j$();return $.catch(()=>{return}),$}async function X$({dmkSession:$}={}){let Y=h,J=$;if(!J){if(!Y)return;if(h===Y)h=void 0;try{J=await Y}catch{return}}if(Y)try{let j=await Y;if(h===Y&&j.dmk===J.dmk&&j.sessionId===J.sessionId)h=void 0}catch(j){if(h===Y)h=void 0}try{await J.dmk.disconnect({sessionId:J.sessionId})}catch(j){if(i8(j))return;throw p(j)}}import{Chain as D,SwapKitError as e8,WalletOption as $9}from"@swapkit/helpers";var o=async({chain:$,ledgerClient:Y})=>{if(!Y)return"";switch($){case D.Cosmos:case D.THORChain:return Y.connect();case D.Ethereum:case D.BinanceSmartChain:case D.Avalanche:case D.Polygon:case D.Arbitrum:case D.Arc:case D.Berachain:case D.Optimism:case D.Base:case D.Aurora:case D.Gnosis:case D.Monad:case D.Robinhood:case D.XLayer:return Y.getAddress();case D.Bitcoin:case D.BitcoinCash:case D.Dash:case D.Dogecoin:case D.Litecoin:case D.Zcash:{let J=Y;await J.connect();let j=await J.getAddress();return $===D.BitcoinCash?j.replace("bitcoincash:",""):j}case D.Near:return await Y.getAddress();case D.Ripple:return Y.getAddress();case D.Stellar:return Y.getAddress();case D.Cardano:return Y.getAddress();case D.Tron:return Y.getAddress();case D.Sui:return Y.connect();case D.Ton:return Y.getAddress();default:throw new e8("wallet_chain_not_supported",{chain:$,wallet:$9.LEDGER})}};import{Chain as U,EVMChains as IY,NetworkDerivationPath as EY,SwapKitError as t0,WalletOption as TY}from"@swapkit/helpers";import{hex as s}from"@scure/base";import{HARDENED_OFFSET as R$,HDKey as w$}from"@scure/bip32";import{Chain as _0,derivationPathToString as V9,NetworkDerivationPath as q9,SwapKitError as d}from"@swapkit/helpers";import{match as k$}from"ts-pattern";import{hex as Z9}from"@scure/base";import{derivationPathToString as X9,getWalletFormatFor as u0,SwapKitError as q$}from"@swapkit/helpers";import{SwapKitError as Y9}from"@swapkit/helpers";function J9($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function l({paramsOrPath:$,transport:Y}){if(J9($))return $;return{derivationPath:$,transport:Y}}async function x({appName:$,connection:Y,createApp:J,operation:j,requiredUserInteraction:Q=T.None}){let{dmkSession:Z,onDeviceActionState:G,transport:X}=Y;if(Z&&X)throw new Y9("wallet_ledger_invalid_params",{message:"Provide either a Ledger DMK session or a LedgerJS transport, not both"});if(X)try{return await j(J(X))}catch(_){throw p(_)}let F=Z??await r(),[{CallTaskInAppDeviceAction:B,DmkResultFactory:z,UnknownDeviceExchangeError:W},{LedgerJsDmkTransport:V}]=await Promise.all([import("../chunk-a47dwwv6.js"),import("../chunk-7rbvcts9.js")]),M=new B({input:{appName:$,requiredUserInteraction:Q,skipOpenApp:!1,task:async(_)=>{try{let w=await j(J(new V(_)));return z({data:{output:w}})}catch(w){return z({error:new W(w)})}}}});return(await E({action:()=>F.dmk.executeDeviceAction({deviceAction:M,sessionId:F.sessionId}),onDeviceActionState:G})).output}import{SwapKitError as j9}from"@swapkit/helpers";var G$=100,z$={cla:224,ins:74},g0=0,B$=128,Q9=[0,144,0];function F$($,Y){let J=$[Y];if(J===void 0||J===255)return;if(J<253)return{size:1,value:J};let j=J===253?2:4;if(Y+1+j>$.length)return;let Q=new DataView($.buffer,$.byteOffset+Y+1,j);return{size:1+j,value:j===2?Q.getUint16(0,!0):Q.getUint32(0,!0)}}function h0($,Y){let J=(G,X={})=>new j9({errorKey:"wallet_ledger_invalid_params",info:{chain:Y,maxLength:G$,operation:"splitOutputsForLegacyApp",outputsLength:$.length,reason:G,...X}}),j=F$($,0);if(!j?.value)throw J("Transaction outputs do not start with a readable non-zero output count");let Q=[],Z=j.size;for(let G=0;G<j.value;G+=1){let X=G===0?0:Z,F=F$($,Z+8),B=F?Z+8+F.size+F.value:void 0;if(!B||B>$.length)throw J("Transaction output is truncated",{outputIndex:G});let z=B-X;if(z>G$)throw J("Output is longer than the Ledger app can check; shorten the memo",{outputIndex:G,pieceLength:z});Q.push($.subarray(X,B)),Z=B}if(Z!==$.length)throw J("Transaction outputs are followed by trailing bytes",{trailingBytes:$.length-Z});return Q}function V$($,Y){let J=[],j=async(Q,Z,G,X,F=Buffer.alloc(0),...B)=>{if(!(Q===z$.cla&&Z===z$.ins&&(G===g0||G===B$)))return $.send(Q,Z,G,X,F,...B);if(J.push(F),G===g0)return Buffer.from(Q9);let W=Buffer.concat(J);J=[];let V=h0(W,Y),M=Buffer.alloc(0);for(let[N,_]of V.entries()){let w=N===V.length-1?B$:g0;M=await $.send(Q,Z,w,X,Buffer.from(_),...B)}return M};return new Proxy($,{get:(Q,Z,G)=>Z==="send"?j:Reflect.get(Q,Z,G)})}var W$=["bitcoin-cash","dash","dogecoin","zcash"],G9=["bitcoin-cash","dash","dogecoin","litecoin"],z9={bitcoin:"Bitcoin","bitcoin-cash":"Bitcoin Cash",dash:"Dash",dogecoin:"Dogecoin",litecoin:"Litecoin",zcash:"Zcash"},B9=({outputScriptHex:$,inputUtxos:Y,btcApp:J,derivationPath:j,chain:Q},Z)=>{let G=Y.map((z)=>{return[J.splitTransaction(z.txHex||"",!W$.includes(Q),Q==="zcash"),z.index,void 0,void 0]}),X=u0(j),F=X!=="legacy",B={additionals:X==="bech32"?["bech32"]:[],associatedKeysets:G.map(()=>j),inputs:G,outputScriptHex:$,segwit:F,useTrustedInputForSegwit:F};return J.createPaymentTransaction({...B,...Z})},F9=({outputScriptHex:$,inputUtxos:Y,btcApp:J,derivationPaths:j,chain:Q},Z)=>{if(j.length!==Y.length)throw new q$("wallet_ledger_invalid_params",{message:`Derivation paths count (${j.length}) must match inputs count (${Y.length})`});let G=Y.map((z)=>{return[J.splitTransaction(z.txHex||"",!W$.includes(Q),Q==="zcash"),z.index,void 0,void 0]}),X=u0(j[0]??""),F=X!=="legacy",B={additionals:X==="bech32"?["bech32"]:[],associatedKeysets:j,inputs:G,outputScriptHex:$,segwit:F,useTrustedInputForSegwit:F};return J.createPaymentTransaction({...B,...Z})},V0=({chain:$,additionalSignParams:Y})=>{let J=G9.includes($);return(j,Q)=>{let{derivationPath:Z,...G}=l({paramsOrPath:j,transport:Q}),X=typeof Z==="string"?Z:X9(Z),F=u0(X);async function B({operation:W,requiredUserInteraction:V}){let M=(await import("@ledgerhq/hw-app-btc")).default;return x({appName:z9[$],connection:G,createApp:(N)=>new M({currency:$,transport:J?V$(N,$):N}),operation:W,requiredUserInteraction:V})}async function z(W){let[{splitTransaction:V},{serializeTransactionOutputs:M}]=await Promise.all([import("@ledgerhq/hw-app-btc/splitTransaction"),import("@ledgerhq/hw-app-btc/serializeTransaction")]),N=M(V(Z9.encode(W.unsignedTx),!0));if(J)h0(N,$);return N.toString("hex")}return{connect:async()=>{await B({operation:async()=>!0})},disconnect:async()=>{},getAddress:async()=>{let{toCashAddress:W}=await import("@swapkit/toolboxes/utxo"),{bitcoinAddress:V}=await B({operation:(M)=>M.getWalletPublicKey(X,{format:F})});if(!V)throw new q$("wallet_ledger_get_address_error",{message:`Cannot get ${$} address from ledger derivation path: ${X}`});return $==="bitcoin-cash"&&F==="legacy"?W(V).replace(/(bchtest:|bitcoincash:)/,""):V},getExtendedPublicKey:async(W="84'/0'/0'",V=76067358)=>{return await B({operation:(M)=>M.getWalletXpub({path:W,xpubVersion:V})})},signTransaction:async(W,V)=>{let M=await z(W);return await B({operation:(N)=>B9({btcApp:N,chain:$,derivationPath:X,inputUtxos:V,outputScriptHex:M},Y),requiredUserInteraction:T.SignTransaction})},signTransactionWithMultiplePaths:async(W,V,M)=>{let N=await z(W);return await B({operation:(_)=>F9({btcApp:_,chain:$,derivationPaths:M,inputUtxos:V,outputScriptHex:N},Y),requiredUserInteraction:T.SignTransaction})}}}},H$=V0({chain:"bitcoin"}),M$=V0({chain:"litecoin"}),N$=V0({additionalSignParams:{additionals:["abc","cashaddr"],segwit:!1,sigHashType:65,useTrustedInputForSegwit:!0},chain:"bitcoin-cash"}),L$=V0({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dogecoin"}),_$=V0({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dash"}),K$=V0({additionalSignParams:{additionals:["zcash","sapling"],expiryHeight:(()=>{let $=Buffer.alloc(4);return $.writeUInt32LE(0),$})(),lockTime:0,segwit:!1,useTrustedInputForSegwit:!1},chain:"zcash"});function b$($){return(typeof $==="string"?$:V9($)).replace(/^m\//,"").replace(/^\/+/,"")}function U$({path:$,reason:Y}){return new d("wallet_ledger_invalid_params",{path:$,reason:Y})}function A$($){let Y=b$($),J=/^(44|49|84|86)'\/0'\/(\d+)'(?:\/(0|1)\/(\d+))?$/.exec(Y);if(!J)throw U$({path:Y,reason:"Expected a Bitcoin path with purpose 44, 49, 84, or 86 and coin type 0"});let j=Number(J[1]),Q=Number(J[2]),Z=Number(J[3]??0),G=Number(J[4]??0);if(Q>=R$||G>=R$)throw U$({path:Y,reason:"Account and address index must be below 2^31"});let X=`${j}'/0'/${Q}'`;return{accountPath:X,addressIndex:G,change:Z,fullPath:`${X}/${Z}/${G}`,purpose:j}}function W9($){if($.length!==4)throw new d("wallet_ledger_invalid_response",{reason:`Expected a 4-byte master fingerprint, received ${$.length}`});return new DataView($.buffer,$.byteOffset,$.byteLength).getUint32(0,!1)}function d0({count:$,tx:Y}){if($!==Y.inputsLength)throw new d("wallet_ledger_invalid_params",{reason:`Input metadata count (${$}) must match transaction inputs count (${Y.inputsLength})`})}function H9({accountPath:$,derivationPaths:Y,tx:J}){d0({count:Y.length,tx:J});let j=Y.map(A$),Q=j.find((Z)=>Z.accountPath!==$);if(Q)throw new d("wallet_ledger_invalid_params",{accountPath:$,path:Q.fullPath,reason:"All input derivation paths must belong to the configured Bitcoin account"});return j}function M9($){return import("../chunk-7kwtpk70.js").then(({DefaultDescriptorTemplate:Y})=>k$($).with(44,()=>Y.LEGACY).with(49,()=>Y.NESTED_SEGWIT).with(84,()=>Y.NATIVE_SEGWIT).with(86,()=>Y.TAPROOT).exhaustive())}function N9($){return"signature"in $&&"pubkey"in $}function J0({inputIndex:$,reason:Y}){return new d("wallet_ledger_invalid_response",{inputIndex:$,reason:Y})}async function L9({input:$,inputIndex:Y,previousTransaction:J}){if(!(J&&$.txid&&$.index!==void 0))throw J0({inputIndex:Y,reason:"PSBT input is missing its previous output"});let{RawTx:j,utils:Q}=await import("@swapkit/utxo-signer"),Z=j.encode({...J,segwitFlag:!1,witnesses:void 0}),G=Q.sha256x2(Z).reverse();if(s.encode(G)!==s.encode($.txid))throw new d("wallet_ledger_invalid_params",{inputIndex:Y,reason:"Previous transaction does not match the input txid"});let X=J.outputs[$.index];if(!X)throw J0({inputIndex:Y,reason:"Previous transaction has no spent output"});let{witnessUtxo:F}=$;if(F&&(F.amount!==X.amount||s.encode(F.script)!==s.encode(X.script)))throw new d("wallet_ledger_invalid_params",{inputIndex:Y,reason:"Input witnessUtxo does not match the previous transaction output"});return X}async function _9({inputIndex:$,path:Y,publicKey:J,spentOutput:j}){let{p2pkh:Q,p2sh:Z,p2tr:G,p2wpkh:X}=await import("@swapkit/utxo-signer"),F=k$(Y.purpose).with(44,()=>Q(J).script).with(49,()=>Z(X(J)).script).with(84,()=>X(J).script).with(86,()=>G(J.slice(1)).script).exhaustive();if(s.encode(F)===s.encode(j.script))return;throw new d("wallet_ledger_invalid_params",{inputIndex:$,path:Y.fullPath,reason:"Input does not spend the script derived from its derivation path"})}function D$({derivationPath:$=q9.BTC,dmkSession:Y,onDeviceActionState:J,transport:j}={}){let Q=A$($),Z=j?H$($,j):void 0,G=Y0({build:async(L)=>{let{SignerBtcBuilder:K}=await import("../chunk-7kwtpk70.js");return new K(L).build()},dmkSession:Y}),X,F;function B(){if(Z)throw new d("wallet_ledger_invalid_params",{reason:"A Device Signer Kit operation is unavailable when a legacy transport is supplied"});return G()}function z(){if(!X){X=B().then(async(K)=>{let{extendedPublicKey:b}=await E({action:()=>K.getExtendedPublicKey(Q.accountPath),onDeviceActionState:J});return b});let L=X;L.catch(()=>{if(X===L)X=void 0})}return X}function W(){if(!F){F=B().then(async(K)=>{let{masterFingerprint:b}=await E({action:()=>K.getMasterFingerprint(),onDeviceActionState:J});return W9(b)});let L=F;L.catch(()=>{if(F===L)F=void 0})}return F}async function V(){let L=Z?await Z.getExtendedPublicKey(Q.accountPath):await z(),{publicKey:K}=w$.fromExtendedKey(L).derive(`m/${Q.change}/${Q.addressIndex}`);if(!K)throw new d("wallet_ledger_invalid_response",{path:Q.fullPath,reason:"Could not derive a public key from the Ledger account xpub"});return K}async function M(){let[{DefaultWallet:L},K]=await Promise.all([import("../chunk-7kwtpk70.js"),M9(Q.purpose)]);return new L(Q.accountPath,K)}async function N({inputUtxos:L,tx:K}){let{RawTx:b}=await import("@swapkit/utxo-signer"),R=Array.from({length:K.inputsLength},(O,k)=>k).some((O)=>!(K.getInput(O).nonWitnessUtxo||L?.[O]?.txHex))?await import("@swapkit/toolboxes/utxo").then(({getUtxoApi:O})=>{let k=O(_0.Bitcoin);return D0((f)=>k.getRawTx(f))}):void 0;return Promise.all(Array.from({length:K.inputsLength},async(O,k)=>{let f=K.getInput(k);if(f.nonWitnessUtxo)return f.nonWitnessUtxo;if(!f.txid)throw J0({inputIndex:k,reason:"PSBT input is missing its previous txid"});let A=L?.[k]?.txHex??await R?.(s.encode(f.txid));if(!A)throw new d("wallet_ledger_invalid_params",{inputIndex:k,reason:"Unable to resolve the previous transaction for Ledger signing"});return b.decode(s.decode(A))}))}async function _({inputUtxos:L,paths:K,tx:b}){let[C,R,O]=await Promise.all([z(),W(),N({inputUtxos:L,tx:b})]),{bip32Path:k}=await import("@swapkit/utxo-signer"),f=w$.fromExtendedKey(C),A=b.clone(),P=[];for(let[v,S]of K.entries()){let c=f.derive(`m/${S.change}/${S.addressIndex}`).publicKey;if(!c)throw new d("wallet_ledger_invalid_response",{inputIndex:v,reason:"Could not derive a public key from the Ledger account xpub"});P[v]=c;let Q0=A.getInput(v),e=O[v],n=await L9({input:Q0,inputIndex:v,previousTransaction:e});await _9({inputIndex:v,path:S,publicKey:c,spentOutput:n});let L0={fingerprint:R,path:k(`m/${S.fullPath}`)};if(S.purpose===86){let O0=c.slice(1);A.updateInput(v,{tapBip32Derivation:[[O0,{der:L0,hashes:[]}]],tapInternalKey:O0,witnessUtxo:n})}else A.updateInput(v,{bip32Derivation:[[c,L0]],nonWitnessUtxo:e,witnessUtxo:S.purpose===44?void 0:n});await O$({chain:_0.Bitcoin,indexes:[v],publicKey:c,tx:A})}return{psbt:A,publicKeys:P}}async function w({inputUtxos:L,paths:K,tx:b}){let[C,R,{psbt:O,publicKeys:k}]=await Promise.all([B(),M(),_({inputUtxos:L,paths:K,tx:b})]),f=O.toPSBT(0),A=await E({action:()=>C.signPsbt(R,f),onDeviceActionState:J}),P=new Set;for(let v of A){if(!N9(v))throw J0({reason:"Unexpected MuSig2 signature"});let{inputIndex:S,pubkey:c}=v,Q0=K[S],e=k[S];if(!(Q0&&e)||P.has(S))throw J0({inputIndex:S,reason:"Unexpected or duplicate input signature"});if(P.add(S),Q0.purpose===86){if(v.tapleafHash)throw J0({inputIndex:S,reason:"Unexpected taproot script signature"});O.updateInput(S,{tapKeySig:v.signature});continue}if(s.encode(c)!==s.encode(e))throw J0({inputIndex:S,reason:"Signature public key does not match the input derivation"});O.updateInput(S,{partialSig:[[e,v.signature]]})}if(P.size!==O.inputsLength)throw J0({reason:`Ledger signed ${P.size} of ${O.inputsLength} inputs`});return O}function y(L){return L.finalize(),L.hex}function I({tx:L,inputUtxos:K}){if(K)d0({count:K.length,tx:L});if(Z)return K?Z.signTransaction(L,K):c0({chain:_0.Bitcoin,legacyClient:Z,tx:L});let b=Array.from({length:L.inputsLength},()=>Q);return w({inputUtxos:K,paths:b,tx:L}).then(y)}return{connect:async()=>{if(Z)return Z.connect();await B()},disconnect:async()=>Z?.disconnect(),getAddress:async()=>{if(Z)return Z.getAddress();let L=await B(),K=await M(),{address:b}=await E({action:()=>L.getWalletAddress(K,Q.addressIndex,{change:Q.change===1}),onDeviceActionState:J});if(!b)throw new d("wallet_ledger_get_address_error",{path:Q.fullPath});return b},getExtendedPublicKey:async({checkOnDevice:L=!1,path:K=Q.accountPath}={})=>{if(Z)return Z.getExtendedPublicKey(K);let b=await B(),C=b$(K),{extendedPublicKey:R}=await E({action:()=>b.getExtendedPublicKey(C,{checkOnDevice:L}),onDeviceActionState:J});return R},getPublicKey:V,showAddressAndPubKey:async()=>{if(Z)return{address:await Z.getAddress()};let L=await B(),K=await M();return E({action:()=>L.getWalletAddress(K,Q.addressIndex,{change:Q.change===1,checkOnDevice:!0}),onDeviceActionState:J})},signTransaction:async(L)=>{if(Z){let b=await c0({chain:_0.Bitcoin,legacyClient:Z,tx:L}),{Transaction:C}=await import("@swapkit/utxo-signer");return C.fromRaw(s.decode(b),{allowUnknownOutputs:!0})}let K=Array.from({length:L.inputsLength},()=>Q);return await w({paths:K,tx:L})},signTransactionHex:I,signTransactionWithMultiplePaths:async({derivationPaths:L,inputUtxos:K,tx:b})=>{if(K)d0({count:K.length,tx:b});let C=H9({accountPath:Q.accountPath,derivationPaths:L,tx:b});if(Z){let R=K??await f$(b,_0.Bitcoin);return Z.signTransactionWithMultiplePaths(b,R,C.map((O)=>`m/${O.fullPath}`))}return w({inputUtxos:K,paths:C,tx:b}).then(y)}}}import{hex as X0}from"@scure/base";import{Chain as G0,NetworkDerivationPath as K9,SwapKitError as q0}from"@swapkit/helpers";function R9($){return new q0("wallet_ledger_method_not_supported",{chain:G0.Cardano,reason:$})}async function w9({address:$,amount:Y,format:J,tokenGroups:j},Q,{AddressType:Z,TxOutputDestinationType:G,TxOutputFormat:X}){let{getCardanoAddressFromBytes:F}=await import("@swapkit/toolboxes/cardano"),z=await F($)===Q.address?{params:{params:{spendingPath:Q.paymentPath,stakingPath:Q.stakingPath},type:Z.BASE_PAYMENT_KEY_STAKE_KEY},type:G.DEVICE_OWNED}:{params:{addressHex:X0.encode($)},type:G.THIRD_PARTY},W=j?.map(({policyId:V,tokens:M})=>({policyIdHex:X0.encode(V),tokens:M.map(({amount:N,assetName:_})=>({amount:N,assetNameHex:X0.encode(_)}))}));return{amount:Y,destination:z,format:J==="legacy"?X.ARRAY_LEGACY:X.MAP_BABBAGE,...W===void 0?{}:{tokenBundle:W}}}async function U9($,Y,J){let{decodeCardanoTransaction:j}=await import("@swapkit/toolboxes/cardano"),{Networks:Q,TransactionSigningMode:Z,TxAuxiliaryDataType:G}=J,{body:X}=await j($),{auxiliaryDataHash:F,fee:B,inputs:z,outputs:W,tagCborSets:V,ttl:M,validityIntervalStart:N}=y$(X,"Ledger",R9);return{additionalWitnessPaths:[],options:{tagCborSets:V},signingMode:Z.ORDINARY_TRANSACTION,tx:{fee:B,inputs:z.map(({index:_,txHash:w})=>({outputIndex:_,path:Y.paymentPath,txHashHex:X0.encode(w)})),network:Q.Mainnet,outputs:await Promise.all(W.map((_)=>w9(_,Y,J))),...F?{auxiliaryData:{params:{hashHex:X0.encode(F)},type:G.ARBITRARY_HASH}}:{},...M===void 0?{}:{ttl:M},...N===void 0?{}:{validityIntervalStart:N}}}}async function O9($,{txHashHex:Y,witnesses:J},{paymentPath:j,publicKey:Q}){let{addCardanoVkeyWitnesses:Z,decodeCardanoTransaction:G}=await import("@swapkit/toolboxes/cardano"),{bodyHash:X}=await G($);if(Y.toLowerCase()!==X)throw new q0("wallet_ledger_invalid_signature",{chain:G0.Cardano,error:"Ledger signed a different transaction body"});if(J.length===0)throw new q0("wallet_ledger_signing_error",{chain:G0.Cardano,error:"Ledger returned no witness"});let F=J.map(({path:B,witnessSignatureHex:z})=>{if(B.length!==j.length||B.some((W,V)=>W!==j[V]))throw new q0("wallet_ledger_signing_error",{chain:G0.Cardano,error:"Ledger returned a witness for an unexpected key"});return{publicKey:Q,signature:X0.decode(z)}});return Z($,F)}async function I$($,Y){let{derivationPath:J,...j}=l({paramsOrPath:$,transport:Y}),Q=J||K9[G0.Cardano],[Z,G,X,F,B]=Q;if(Q.length!==5||F!==0||B===void 0)throw new q0("wallet_ledger_derivation_path_error",{chain:G0.Cardano,derivationPath:Q});let z=await import("@cardano-foundation/ledgerjs-hw-app-cardano"),{getCardanoAddressFromBytes:W,getCardanoPublicKeyHash:V}=await import("@swapkit/toolboxes/cardano"),{HARDENED:M,Networks:N}=z,_=[Z+M,G+M,X+M],w=[..._,0,B],y=[..._,2,0];function I({operation:f,requiredUserInteraction:A}){return x({appName:"Cardano ADA",connection:j,createApp:(P)=>new z.Ada(P),operation:f,requiredUserInteraction:A})}function L(f){let A=Buffer.from(f?.publicKeyHex??"","hex");if(A.length!==32)throw new q0("wallet_ledger_failed_to_get_address",{chain:G0.Cardano,derivationPath:Q});return A}let K=await I({operation:(f)=>f.getExtendedPublicKeys({paths:[w,y]})}),b=L(K[0]),C=L(K[1]),R=await V(b),O=await W(Buffer.concat([Buffer.from([N.Mainnet.networkId]),R,await V(C)]));async function k(f){let A=await U9(f,{address:O,paymentPath:w,stakingPath:y},z),P=await I({operation:(v)=>v.signTransaction(A),requiredUserInteraction:T.SignTransaction});return O9(f,P,{paymentPath:w,publicKey:b})}return{getAddress:()=>O,publicKey:b,publicKeyHash:R,signTransaction:k}}import{hex as p0}from"@scure/base";import{derivationPathToString as A9,NetworkDerivationPath as D9,SwapKitError as W0}from"@swapkit/helpers";var E$=0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141n,f9=E$>>1n;function k9($){return $.reduce((Y,J)=>Y<<8n|BigInt(J),0n)}function b9($){let Y=new Uint8Array(32),J=$;for(let j=31;j>=0;j-=1)Y[j]=Number(J&0xffn),J>>=8n;return Y}function y0($){let Y=k9($.subarray(32,64));if(Y<=f9)return $;let J=new Uint8Array(64);return J.set($.subarray(0,32),0),J.set(b9(E$-Y),32),J}function y9($){let Y=(typeof $==="string"?$:A9($)).replace(/^m\//,"").replace(/^\/+/,"");if(!/^44'\/118'\/\d+'\/(0|1)\/\d+$/.test(Y))throw new W0("wallet_ledger_invalid_params",{path:Y,reason:"Expected a five-level Cosmos derivation path with coin type 118"});return Y}async function T$($){let{Secp256k1Signature:Y}=await import("@cosmjs/crypto");try{return y0($.length===64?Y.fromFixedLength($).toFixedLength():Y.fromDer($).toFixedLength())}catch(J){throw new W0("wallet_ledger_invalid_response",J)}}class o0{chain="cosmos";derivationPath;onDeviceActionState;transport;legacyAppPromise;pubKey=null;getSessionSigner;constructor({derivationPath:$=D9.GAIA,dmkSession:Y,onDeviceActionState:J,transport:j}={}){this.derivationPath=y9($),this.getSessionSigner=Y0({build:async(Q)=>{let{SignerCosmosBuilder:Z}=await import("../chunk-x28a37pz.js");return new Z(Q).build()},dmkSession:Y}),this.onDeviceActionState=J,this.transport=j}getSigner(){if(this.transport)throw new W0("wallet_ledger_invalid_params",{reason:"A Device Signer Kit operation is unavailable when a legacy transport is supplied"});return this.getSessionSigner()}getLegacyApp(){if(!this.transport)throw new W0("wallet_ledger_invalid_params",{reason:"Legacy Cosmos transport is unavailable"});return this.legacyAppPromise??=import("@ledgerhq/hw-app-cosmos").then(({default:$})=>new $(this.transport)),this.legacyAppPromise}async runLegacyOperation($){let Y=await this.getLegacyApp();try{return await $(Y)}catch(J){throw p(J,{userRefusedStatusWords:$0})}}async signBytes($){if(this.transport){let j=await this.runLegacyOperation((Q)=>Q.sign(this.derivationPath,new TextDecoder().decode($)));if(j.return_code!==36864||!j.signature)throw new W0("wallet_ledger_invalid_response",{returnCode:j.return_code});return T$(j.signature)}let Y=await this.getSigner(),J=await E({action:()=>Y.signTransaction(this.derivationPath,this.chain,$),onDeviceActionState:this.onDeviceActionState,userRefusedStatusWords:$0});return T$(J)}async connect(){if(this.transport)await this.getLegacyApp();else await this.getSigner();let{address:$,publicKey:Y}=await this.getAddressAndPubKey();return this.pubKey=Buffer.from(Y,"hex").toString("base64"),$}async disconnect(){}async getAddressAndPubKey(){if(this.transport)return this.runLegacyOperation((j)=>j.getAddress(this.derivationPath,this.chain));let $=await this.getSigner(),{address:Y,publicKey:J}=await E({action:()=>$.getAddress(this.derivationPath,this.chain),onDeviceActionState:this.onDeviceActionState,userRefusedStatusWords:$0});return{address:Y,publicKey:p0.encode(J)}}async showAddressAndPubKey(){if(this.transport)return this.runLegacyOperation((j)=>j.getAddress(this.derivationPath,this.chain,!0));let $=await this.getSigner(),{address:Y,publicKey:J}=await E({action:()=>$.getAddress(this.derivationPath,this.chain,{checkOnDevice:!0}),onDeviceActionState:this.onDeviceActionState,userRefusedStatusWords:$0});return{address:Y,publicKey:p0.encode(J)}}async signTransaction($,Y="0"){let J=await this.signBytes(typeof $==="string"?new TextEncoder().encode($):$);if(!this.pubKey){let{publicKey:j}=await this.getAddressAndPubKey();this.pubKey=Buffer.from(j,"hex").toString("base64")}return[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:Y,signature:J}]}async signAmino($,Y){let j=(await this.getAccounts()).find(({address:X})=>X===$);if(!j)throw new W0("wallet_ledger_address_not_found",{address:$});let{encodeSecp256k1Signature:Q,serializeSignDoc:Z}=await import("@cosmjs/amino"),G=await this.signBytes(Z(Y));return{signature:Q(j.pubkey,G),signed:Y}}async getAccounts(){let{address:$,publicKey:Y}=await this.getAddressAndPubKey();return[{address:$,algo:"secp256k1",pubkey:p0.decode(Y)}]}}import{ChainId as m,derivationPathToString as I9,NetworkDerivationPath as E9,SwapKitError as z0}from"@swapkit/helpers";import{AbstractSigner as T9}from"ethers";function C9({primaryType:$,types:Y}){let J={};function j(Q){if(Object.hasOwn(J,Q)||!Object.hasOwn(Y,Q))return;let Z=Y[Q];if(!Z)return;J[Q]=Z;for(let G of Z)j(G.type.replace(/\[[0-9]*\]/g,""))}if(j($),!Object.hasOwn(J,$))throw new z0("wallet_ledger_invalid_params",{primaryType:$,reason:"The EIP-712 primary type is not defined"});return J}var v9={report:()=>Promise.resolve(void 0)};class g extends T9{chainId=m.Ethereum;derivationPath="";dmkSession;getLedgerSigner;onDeviceActionState;originToken;constructor({provider:$,dmkSession:Y,derivationPath:J=E9.OP,chainId:j=m.Optimism,onDeviceActionState:Q,originToken:Z}){super($);this.chainId=j||m.Ethereum,this.derivationPath=(typeof J==="string"?J:I9(J)).replace(/^m\//,""),this.dmkSession=Y,this.onDeviceActionState=Q,this.originToken=Z,this.getLedgerSigner=Y0({build:async(G)=>{let[{ContextModuleBuilder:X,ContextModuleChainID:F},{SignerEthBuilder:B}]=await Promise.all([import("../chunk-sp3dq5hr.js"),import("../chunk-s5a5v0m1.js")]),z=new X({loggerFactory:(W)=>G.dmk.getLoggerFactory()(["ContextModule",W]),originToken:Z}).setChain(F.Ethereum).setBlindSigningReporter(v9).build();return z.signReport=()=>Promise.resolve(),new B({...G,originToken:Z}).withContextModule(z).build()},dmkSession:Y}),Object.defineProperty(this,"provider",{enumerable:!0,value:$||null,writable:!1})}connect=($)=>new g({chainId:this.chainId,derivationPath:this.derivationPath,dmkSession:this.dmkSession,onDeviceActionState:this.onDeviceActionState,originToken:this.originToken,provider:$});getAddress=async()=>{let{address:$}=await this.getAddressAndPubKey();if(!$)throw new z0("wallet_ledger_failed_to_get_address");return $};getAddressAndPubKey=async()=>{let $=await this.getLedgerSigner();return E({action:()=>$.getAddress(this.derivationPath,{chainId:Number(this.chainId)}),onDeviceActionState:this.onDeviceActionState})};showAddressAndPubKey=async()=>{let $=await this.getLedgerSigner();return E({action:()=>$.getAddress(this.derivationPath,{chainId:Number(this.chainId),checkOnDevice:!0}),onDeviceActionState:this.onDeviceActionState})};signMessage=async($)=>{let{Signature:Y,toUtf8Bytes:J}=await import("ethers"),j=typeof $==="string"?J($):$,Q=await this.getLedgerSigner(),Z=await E({action:()=>Q.signMessage(this.derivationPath,j),onDeviceActionState:this.onDeviceActionState});return Y.from(Z).serialized};signTypedData=async($,Y,J,j)=>{let{buildEIP712DomainType:Q}=await import("@swapkit/toolboxes/evm"),{hexlify:Z,Signature:G,TypedDataEncoder:X}=await import("ethers"),{EIP712Domain:F,...B}=Y,z=j??X.from(B).primaryType,W=C9({primaryType:z,types:B}),V=await X.resolveNames($,W,J,async(I)=>{let L=await this.resolveName(I);if(!L)throw new z0("wallet_ledger_invalid_params",{name:I});return L}),M=V.domain.chainId==null?void 0:Number(V.domain.chainId);if(M!==void 0&&!Number.isSafeInteger(M))throw new z0("wallet_ledger_invalid_params",{chainId:V.domain.chainId});let _={domain:{...V.domain.chainId!=null&&{chainId:M},...V.domain.name!=null&&{name:V.domain.name},...V.domain.salt!=null&&{salt:Z(V.domain.salt)},...V.domain.verifyingContract!=null&&{verifyingContract:V.domain.verifyingContract},...V.domain.version!=null&&{version:V.domain.version}},message:V.value,primaryType:z,types:{EIP712Domain:Q(V.domain),...W}},w=await this.getLedgerSigner(),y=await E({action:()=>w.signTypedData(this.derivationPath,_),onDeviceActionState:this.onDeviceActionState});return G.from(y).serialized};signTransaction=async($)=>{let{copyRequest:Y,getAddress:J,getBytes:j,resolveAddress:Q,resolveProperties:Z,Transaction:G}=await import("ethers"),X=Y($);if(X.type===4||X.authorizationList?.length)throw new z0("wallet_ledger_invalid_params",{message:"Ledger Ethereum DSK does not support EIP-7702 transactions"});let F=BigInt(this.chainId);if(X.chainId!=null&&X.chainId!==F)throw new z0("wallet_ledger_invalid_params",{chainId:X.chainId,expectedChainId:F,message:"Transaction chainId does not match the Ledger client chain"});let{from:B,to:z}=await Z({from:X.from?Q(X.from,this):void 0,to:X.to?Q(X.to,this):void 0}),W=B||X.nonce==null?await this.getAddress():void 0;if(B&&W&&J(B)!==J(W))throw new z0("wallet_ledger_invalid_params",{message:"Transaction from address does not match the Ledger account"});if(z)X.to=z;if(delete X.from,delete X.authorizationList,X.chainId=F,X.type==null&&X.gasPrice!=null&&X.accessList==null&&X.maxFeePerGas==null&&X.maxPriorityFeePerGas==null)X.type=0;X.nonce??=await this.provider?.getTransactionCount(W??await this.getAddress());let M=G.from(X),N=j(M.unsignedSerialized),_=await this.getLedgerSigner(),w=await E({action:()=>_.signTransaction(this.derivationPath,N),onDeviceActionState:this.onDeviceActionState});return M.signature=w,M.serialized}}function C$($){return new g({...$,chainId:m.Arbitrum})}function v$($){return new g({...$,chainId:m.Arc})}function P$($){return new g({...$,chainId:m.Aurora})}function S$($){return new g({...$,chainId:m.Avalanche})}function x$($){return new g({...$,chainId:m.Base})}function m$($){return new g({...$,chainId:m.Ethereum})}function l$($){return new g({...$,chainId:m.Gnosis})}function g$($){return new g({...$,chainId:m.Optimism})}function h$($){return new g({...$,chainId:m.Polygon})}function u$($){return new g({...$,chainId:m.Robinhood})}function c$($){return new g({...$,chainId:m.BinanceSmartChain})}function d$($){return new g({...$,chainId:m.Monad})}function p$($){return new g({...$,chainId:m.XLayer})}function o$($){return new g({...$,chainId:m.Berachain})}import{Chain as P9,NetworkDerivationPath as S9,SwapKitError as K0}from"@swapkit/helpers";async function s$($,Y){let{derivationPath:J,...j}=l({paramsOrPath:$,transport:Y}),Q=(J||S9[P9.Near]).join("'/").concat("'");async function Z({operation:B,requiredUserInteraction:z}){let W=(await import("@ledgerhq/hw-app-near")).default;return x({appName:"NEAR",connection:j,createApp:(V)=>new W(V),operation:B,requiredUserInteraction:z})}let{address:G,publicKey:X}=await Z({operation:(B)=>B.getAddress(Q)});return{getAddress(){return Promise.resolve(G)},async getPublicKey(){let{PublicKey:B}=await import("@near-js/crypto"),z=X.startsWith("ed25519:")?X:`ed25519:${X}`;return B.fromString(z)},signDelegateAction(B){return Promise.reject(new K0("wallet_ledger_method_not_supported",{method:"signDelegateAction",wallet:"Ledger"}))},signNep413Message(B,z,W,V,M){return Promise.reject(new K0("wallet_ledger_method_not_supported",{method:"signNep413Message",wallet:"Ledger"}))},async signTransaction(B){let{Signature:z,SignedTransaction:W}=await import("@near-js/transactions");try{let V=await Z({operation:(_)=>_.signTransaction(B.encode(),Q),requiredUserInteraction:T.SignTransaction});if(!V)throw new K0("wallet_ledger_signing_error",{reason:"Ledger returned no NEAR signature"});let M=new z({data:V,keyType:0}),N=new W({signature:M,transaction:B});return[V,N]}catch(V){if(V instanceof K0)throw V;throw new K0("wallet_ledger_signing_error",{error:V})}}}}import{Chain as s0,derivationPathToString as x9,NetworkDerivationPath as m9,SwapKitError as i$}from"@swapkit/helpers";function l9($){let[Y,J,j,Q,Z]=$;if(Y!==44||J!==148||j===void 0||Q||Z)throw new i$("wallet_ledger_derivation_path_error",{chain:s0.Stellar,derivationPath:$,reason:"Stellar only uses m/44'/148'/x'"});return x9([Y,J,j]).replace(/^m\//,"")}async function n$($,Y){let{derivationPath:J,...j}=l({paramsOrPath:$,transport:Y}),Q=l9(J||m9[s0.Stellar]);async function Z({operation:z,requiredUserInteraction:W}){let V=(await import("@ledgerhq/hw-app-str")).default;return x({appName:"Stellar",connection:j,createApp:(M)=>new V(M),operation:z,requiredUserInteraction:W})}let[{rawPublicKey:G},{StrKey:X}]=await Promise.all([Z({operation:(z)=>z.getPublicKey(Q)}),import("@stellar/stellar-sdk")]),F=X.encodeEd25519PublicKey(G);async function B(z){let{signature:W}=await Z({operation:(V)=>V.signTransaction(Q,z.signatureBase()),requiredUserInteraction:T.SignTransaction});try{z.addSignature(F,W.toString("base64"))}catch(V){throw new i$("wallet_ledger_invalid_signature",{chain:s0.Stellar,error:V})}return z}return{getAddress:()=>F,publicKey:G,signTransaction:B}}import{Chain as g9,derivationPathToString as h9,NetworkDerivationPath as u9,SwapKitError as B0}from"@swapkit/helpers";class r${derivationPath;address=null;publicKey=null;connection;constructor($,Y){let{derivationPath:J,...j}=l({paramsOrPath:$,transport:Y});this.derivationPath=typeof J==="string"?J:h9(J||u9[g9.Sui]),this.connection=j}getLedgerPath(){return this.derivationPath.replace(/^m\//,"").replace(/\/(\d+)\/(\d+)$/,"/$1'/$2'")}async runSuiOperation({operation:$,requiredUserInteraction:Y}){let J=(await import("@ledgerhq/hw-app-sui")).default;return x({appName:"Sui",connection:this.connection,createApp:(j)=>new J(j),operation:$,requiredUserInteraction:Y})}async connect(){let $=this.getLedgerPath(),Y=await this.runSuiOperation({operation:(J)=>J.getPublicKey($)});if(!Y?.publicKey)throw new B0("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 B0("wallet_ledger_failed_to_get_address");return this.address}async getAddress(){if(this.address)return this.address;return await this.connect()}async signTransaction($){let Y=$ instanceof Uint8Array?$:$.transaction;if(!this.publicKey)throw new B0("wallet_ledger_failed_to_get_address");try{let J=this.getLedgerPath(),j=new Uint8Array(3+Y.length);j.set(Y,3);let Q=await this.runSuiOperation({operation:(X)=>X.signTransaction(J,j),requiredUserInteraction:T.SignTransaction});if(!Q?.signature)throw new B0("wallet_ledger_signing_error");let Z=this.publicKey.length===33?this.publicKey.slice(1):this.publicKey;if(Z.length!==32)throw new B0("wallet_ledger_signing_error",{error:"Invalid public key length"});let G=new Uint8Array(97);return G.set(Q.signature,1),G.set(Z,65),{bytes:Buffer.from(Y).toString("base64"),signature:Buffer.from(G).toString("base64")}}catch(J){if(J instanceof B0)throw J;throw new B0("wallet_ledger_signing_error",{error:J})}}}function a$($,Y){return new r$($,Y)}import{base64 as I0,hex as i9}from"@scure/base";import{NetworkDerivationPath as n9,SwapKitError as E0}from"@swapkit/helpers";import{SwapKitError as j0}from"@swapkit/helpers";var $8=85,c9=4,d9=0,i0=2,p9=0,o9=1,t$=2,n0=36864,e$=250;class R0{name="THORChainCommand";params;constructor($){this.params=$}getApdu(){let{data:$=new Uint8Array,ins:Y,p1:J=0,p2:j=0}=this.params;return{cla:$8,data:$,ins:Y,p1:J,p2:j}}parseResponse($){let Y=($.statusCode[0]??0)*256+($.statusCode[1]??0);if(Y!==n0)throw Error(`THORChain app returned status 0x${Y.toString(16).padStart(4,"0")}`);return $.data}}function Y8({path:$}){if($.length!==5)throw new j0("wallet_ledger_invalid_params",{reason:"THORChain path must contain five elements"});let Y=new Uint8Array(20),J=new DataView(Y.buffer);return $.forEach((j,Q)=>{if(typeof j!=="number"||!Number.isInteger(j)||j<0||j>4294967295)throw new j0("wallet_ledger_invalid_params",{reason:`Invalid THORChain path segment ${Q}`});if(Q>=3&&j>=2147483648)throw new j0("wallet_ledger_invalid_params",{reason:`THORChain path segment ${Q} must not be hardened`});let Z=j&2147483647,G=Q<3?(Z|2147483648)>>>0:Z;J.setUint32(Q*4,G,!0)}),Y}function s9({hrp:$,path:Y}){let J=new TextEncoder().encode($);if(J.length<1||J.length>83)throw new j0("wallet_ledger_invalid_params",{reason:"Invalid THORChain address prefix"});let j=Y8({path:Y});return Uint8Array.from([J.length,...J,...j])}function J8({checkOnDevice:$,hrp:Y,path:J}){return new R0({data:s9({hrp:Y,path:J}),ins:c9,p1:$?1:0})}function j8({message:$,path:Y}){let J=[new R0({data:Y8({path:Y}),ins:i0,p1:p9})];if($.length===0)return J.push(new R0({data:new Uint8Array,ins:i0,p1:t$})),J;for(let j=0;j<$.length;j+=e$){let Q=Math.min(j+e$,$.length);J.push(new R0({data:$.slice(j,Q),ins:i0,p1:Q===$.length?t$:o9}))}return J}function Q8({response:$}){if($.length<2)throw new j0("wallet_ledger_invalid_response",{reason:"THORChain response is missing status bytes"});return $.slice(0,-2)}async function Z8({transport:$}){let Y=await $.send($8,d9,0,0,Buffer.alloc(0),[n0]),J=Q8({response:Y});if(J.length<4)throw new j0("wallet_ledger_invalid_response",{reason:"Invalid THORChain version response"});return`${J[1]}.${J[2]}.${J[3]}`}async function X8({command:$,transport:Y}){let J=$.getApdu(),j=await Y.send(J.cla,J.ins,J.p1,J.p2,Buffer.from(J.data),[n0]);return Q8({response:j})}function G8({response:$}){if($.length<34)throw new j0("wallet_ledger_invalid_response",{reason:"Invalid THORChain address response"});let Y=$.slice(0,33),J=new TextDecoder().decode($.slice(33));if(!J)throw new j0("wallet_ledger_invalid_response",{reason:"THORChain address is empty"});return{address:J,publicKey:Y}}function r0({version:$}){return`THORChain Ledger app major 2 is required, received ${$||"unknown"}`}var r9="THORChain";function a9($){if(typeof $==="string")return $;let Y=$.chain?.toUpperCase(),J=($.symbol||$.ticker||"").toUpperCase();if(!(Y&&J))return J||Y||"";return`${Y}${$.synth?"/":"."}${J}`}function t9($){return{...$,msgs:$.msgs.map((Y)=>{if(!Y.type.includes("MsgDeposit"))return Y;let J=Y.value.coins;if(!Array.isArray(J))return Y;return{...Y,value:{...Y.value,coins:J.map((j)=>({...j,asset:a9(j.asset)}))}}})}}async function e9({signature:$}){let{Secp256k1Signature:Y}=await import("@cosmjs/crypto");try{return y0(Y.fromDer($).toFixedLength())}catch(J){throw new E0("wallet_ledger_invalid_signature",J)}}async function $Y({commands:$,transport:Y}){let J=await Z8({transport:Y});if(!J.startsWith("2.")){let{InvalidResponseFormatError:Q}=await import("../chunk-a47dwwv6.js");throw new Q(r0({version:J}))}let j=new Uint8Array;for(let Q of $)j=await X8({command:Q,transport:Y});return j}class a0{derivationPath;dmkSession;onDeviceActionState;pubKey;transport;constructor({derivationPath:$=n9.THOR,dmkSession:Y,onDeviceActionState:J,transport:j}={}){if(Y&&j)throw new E0("wallet_ledger_invalid_params",{message:"Provide either a Ledger DMK session or a LedgerJS transport, not both"});this.derivationPath=$,this.dmkSession=Y,this.onDeviceActionState=J,this.transport=j}get pubkey(){return this.pubKey?I0.encode(this.pubKey):null}executeCommands=async({commands:$,requiredUserInteraction:Y})=>{if(this.transport)try{return await $Y({commands:$,transport:this.transport})}catch(N){throw p(N,{userRefusedStatusWords:$0})}let J=this.dmkSession??await r(),{Apdu:j,CallTaskInAppDeviceAction:Q,CommandResultFactory:Z,DmkResultFactory:G,InvalidResponseFormatError:X,InvalidStatusWordError:F,isSuccessCommandResult:B,UnknownDeviceExchangeError:z}=await import("../chunk-a47dwwv6.js"),W=(N)=>{let _=N.getApdu();return{getApdu:()=>new j(_.cla,_.ins,_.p1,_.p2,_.data),name:N.name,parseResponse:(w)=>{try{return Z({data:N.parseResponse(w)})}catch(y){let I=i9.encode(w.statusCode);return Z({error:Object.assign(new F(y instanceof Error?y.message:String(y)),{errorCode:I})})}}}},V=new Q({input:{appName:r9,requiredUserInteraction:Y,skipOpenApp:!1,task:async(N)=>{try{let _=N.getDeviceSessionState(),w="currentApp"in _?_.currentApp.version:void 0;if(!w?.startsWith("2."))return G({error:new X(r0({version:w}))});let y=new Uint8Array;for(let I of $){let L=await N.sendCommand(W(I));if(!B(L))return G({error:L.error});y=L.data}return G({data:{response:y}})}catch(_){return G({error:new z(_)})}}}});return(await E({action:()=>J.dmk.executeDeviceAction({deviceAction:V,sessionId:J.sessionId}),onDeviceActionState:this.onDeviceActionState,userRefusedStatusWords:$0})).response};getAddressData=async({checkOnDevice:$})=>{let Y=await this.executeCommands({commands:[J8({checkOnDevice:$,hrp:"thor",path:this.derivationPath})],requiredUserInteraction:$?T.VerifyAddress:T.None});return G8({response:Y})};signBytes=async({message:$})=>{let Y=await this.executeCommands({commands:j8({message:$,path:this.derivationPath}),requiredUserInteraction:T.SignTransaction});return e9({signature:Y})};connect=async()=>{let{address:$,publicKey:Y}=await this.getAddressData({checkOnDevice:!1});return this.pubKey=Y,$};getAddressAndPubKey=async()=>{let{address:$,publicKey:Y}=await this.getAddressData({checkOnDevice:!1});return this.pubKey=Y,{bech32_address:$,compressed_pk:Y,error_message:"No errors",return_code:36864}};showAddressAndPubKey=async()=>{let{address:$,publicKey:Y}=await this.getAddressData({checkOnDevice:!0});return this.pubKey=Y,{bech32_address:$,compressed_pk:Y,error_message:"No errors",return_code:36864}};signTransaction=async({rawTx:$,sequence:Y="0"})=>{if(!this.pubKey)await this.connect();let J=this.pubKey;if(!J)throw new E0("wallet_ledger_pubkey_not_found");let j=await this.signBytes({message:new TextEncoder().encode($)});return[{pub_key:{type:"tendermint/PubKeySecp256k1",value:I0.encode(J)},sequence:Y,signature:I0.encode(j)}]};signAmino=async($,Y)=>{let J=(await this.getAccounts()).find(({address:G})=>G===$);if(!J)throw new E0("wallet_ledger_address_not_found",{address:$});let{encodeSecp256k1Signature:j,serializeSignDoc:Q}=await import("@cosmjs/amino"),Z=await this.signBytes({message:Q(t9(Y))});return{signature:j(J.pubkey,Z),signed:Y}};getAccounts=async()=>{let{address:$,publicKey:Y}=await this.getAddressData({checkOnDevice:!1});return this.pubKey=Y,[{address:$,algo:"secp256k1",pubkey:Y}]};sign=async($)=>I0.encode(await this.signBytes({message:new TextEncoder().encode($)}))}import{Chain as z8,getRPCUrl as YY,NetworkDerivationPath as JY,SwapKitError as H0,WalletOption as V8}from"@swapkit/helpers";var jY=3,QY=300,B8=0;function ZY($){let[Y,J,j,Q,Z,...G]=$;if(!(Y===44&&J===607&&j===0&&Q===0&&typeof Z==="number"&&Number.isInteger(Z)&&Z>=0&&G.length===0))throw new H0({errorKey:"wallet_ledger_derivation_path_error",info:{derivationPath:$,reason:"Ledger TON accounts derive from m/44'/607'/0'/0'/{account}'"}});return[44,607,0,0,Z,0]}function F0($,Y={}){return new H0({errorKey:"wallet_ledger_invalid_params",info:{...Y,reason:$,wallet:V8.LEDGER}})}function XY($){let Y=Array.isArray($)?$:$.messages,[J]=Y;if(!J)throw F0("A TON transaction needs one message");if(Y.length>1)throw new H0({errorKey:"wallet_ledger_method_not_supported",info:{messageCount:Y.length,method:"signTransaction",reason:"Ledger signs one TON message per transaction",wallet:V8.LEDGER}});let j=(Array.isArray($)?J.sendMode:$.sendMode??J.sendMode)??jY;if(!Array.isArray($)&&J.sendMode!==void 0&&J.sendMode!==j)throw F0("The message send mode differs from the transaction send mode",{messageSendMode:J.sendMode,sendMode:j});if(!Number.isInteger(j)||j<0||j>255)throw F0("The TON send mode must be an integer between 0 and 255",{sendMode:j});return{message:J,sendMode:j}}async function GY($){let[{Address:Y,Cell:J,loadStateInit:j},{parseMessage:Q}]=await Promise.all([import("@ton/core"),import("@ton-community/ton-ledger")]);if(!/^\d+$/.test($.amount))throw F0("The TON amount must be an integer number of nanotons",{amount:$.amount});let Z=BigInt($.amount),G;try{G=Y.parse($.address)}catch{throw F0("Invalid TON destination address",{address:$.address})}let X=Y.isFriendly($.address)?Y.parseFriendly($.address).isBounceable:!0,F;if($.stateInit!==void 0)try{F=j(J.fromBase64($.stateInit).beginParse())}catch{throw F0("The TON state init is not a valid BOC",{stateInit:$.stateInit})}let B;if($.payload!==void 0)try{B=J.fromBase64($.payload)}catch{throw F0("The TON payload is not a valid BOC",{payload:$.payload})}let z=B?Q(B,{disallowModification:!0}):void 0;return{amount:Z,bounce:X,payload:B,payloadFormat:z,stateInit:F,to:G}}function F8($,Y){return $&&Y?$.hash().equals(Y.hash()):$==null&&Y==null}function zY($,Y){if(!($&&Y))return $==null&&Y==null;return F8($.code,Y.code)&&F8($.data,Y.data)}async function BY($,Y){let{Cell:J,loadMessageRelaxed:j}=await import("@ton/core"),Q;try{let X=$.beginParse().skip(512),F=X.loadUint(32),B=X.loadUint(32),z=X.loadUint(32);X.skip(8);let W=X.loadUint(8),V=j(X.loadRef().beginParse());X.endParse(),Q={order:V,sendMode:W,seqno:z,timeout:B,walletId:F}}catch(X){throw new H0({errorKey:"wallet_ledger_signing_error",info:{reason:"Unreadable signed TON transfer"}},X)}let{order:Z}=Q;if(!(Q.walletId===Y.walletId&&Q.timeout===Y.timeout&&Q.seqno===Y.seqno&&Q.sendMode===Y.sendMode&&Z.info.type==="internal"&&Z.info.dest.equals(Y.to)&&Z.info.value.coins===Y.amount&&Z.info.bounce===Y.bounce&&Z.body.hash().equals((Y.payload??J.EMPTY).hash())&&zY(Z.init,Y.stateInit)))throw new H0({errorKey:"wallet_ledger_signing_error",info:{reason:"The signed TON transfer does not match the requested message"}})}async function q8($,Y){let{derivationPath:J,...j}=l({paramsOrPath:$,transport:Y}),Q=ZY(J||JY[z8.Ton]);async function Z({operation:_,requiredUserInteraction:w}){let{TonTransport:y}=await import("@ton-community/ton-ledger");return x({appName:"TON",connection:j,createApp:(I)=>new y(I),operation:_,requiredUserInteraction:w})}let[{Address:G},{WalletContractV4:X}]=await Promise.all([import("@ton/core"),import("@ton/ton")]),{address:F,publicKey:B}=await Z({operation:(_)=>_.getAddress(Q,{bounceable:!1,chain:B8,testOnly:!1,walletVersion:"v4"})}),z=X.create({publicKey:B,workchain:B8});if(!z.address.equals(G.parse(F)))throw new H0({errorKey:"wallet_ledger_failed_to_get_address",info:{deviceAddress:F,reason:"The Ledger TON address is not the wallet v4 address of its public key"}});let W=z.address.toString({bounceable:!1,urlSafe:!0}),V;async function M(){if(!V){let{TonClient:I}=await import("@ton/ton");V=new I({endpoint:await YY(z8.Ton)})}let{state:_}=await V.getContractState(z.address),w=_==="active",y=w?await V.open(z).getSeqno():0;return{deployed:w,seqno:y}}async function N(_){let{message:w,sendMode:y}=XY(_),I=await GY(w),{deployed:L,seqno:K}=await M(),b=Math.floor(Date.now()/1000)+QY,C=await Z({operation:(f)=>f.signTransaction(Q,{amount:I.amount,bounce:I.bounce,payload:I.payloadFormat,sendMode:y,seqno:K,stateInit:I.stateInit,timeout:b,to:I.to}),requiredUserInteraction:T.SignTransaction});await BY(C,{...I,sendMode:y,seqno:K,timeout:b,walletId:z.walletId});let{beginCell:R,external:O,storeMessage:k}=await import("@ton/core");return R().store(k(O({body:C,init:L?void 0:z.init,to:z.address}))).endCell()}return{getAddress:()=>W,publicKey:B,signTransaction:N}}import{derivationPathToString as FY,NetworkDerivationPath as VY,SwapKitError as w0}from"@swapkit/helpers";class W8{derivationPath;ledgerTimeout=50000;connection;constructor($,Y){let{derivationPath:J,...j}=l({paramsOrPath:$,transport:Y});this.derivationPath=typeof J==="string"?J:FY(J||VY.TRON),this.connection=j}async runTronOperation({operation:$,requiredUserInteraction:Y}){let J=(await import("@ledgerhq/hw-app-trx")).default;return x({appName:"Tron",connection:this.connection,createApp:(j)=>new J(j),operation:$,requiredUserInteraction:Y})}checkOrCreateTransportAndLedger=async()=>{await this.runTronOperation({operation:async()=>!0})};createTransportAndLedger=async()=>{await this.runTronOperation({operation:async()=>!0})};getAddress=async()=>{let $=await this.getAddressAndPubKey();if(!$)throw new w0("wallet_ledger_failed_to_get_address");return $.address};getAddressAndPubKey=async()=>{let $=await this.runTronOperation({operation:(Y)=>Y.getAddress(this.derivationPath)});if(!$)throw new w0("wallet_ledger_failed_to_get_address");return{address:$.address,publicKey:$.publicKey}};showAddressAndPubKey=async()=>{return await this.runTronOperation({operation:($)=>$.getAddress(this.derivationPath,!0),requiredUserInteraction:T.VerifyAddress})};signTransaction=async($)=>{try{let Y=await this.runTronOperation({operation:(J)=>J.signTransaction(this.derivationPath,$.raw_data_hex,[]),requiredUserInteraction:T.SignTransaction});if(!Y)throw new w0("wallet_ledger_signing_error");return{...$,signature:[Y]}}catch(Y){if(Y instanceof w0)throw Y;throw new w0("wallet_ledger_signing_error",{error:Y})}}}function H8($,Y){return new W8($,Y)}import{Chain as qY,derivationPathToString as WY,NetworkDerivationPath as HY}from"@swapkit/helpers";var MY=2147483648;function NY($){return Object.fromEntries(Object.entries($).filter(([,Y])=>Y!==null&&Y!==void 0))}async function M8($,Y){let{derivationPath:J,...j}=l({paramsOrPath:$,transport:Y}),Q=WY(J||HY[qY.Ripple]);async function Z({operation:B,requiredUserInteraction:z}){let W=(await import("@ledgerhq/hw-app-xrp")).default;return x({appName:"XRP",connection:j,createApp:(V)=>new W(V),operation:B,requiredUserInteraction:z})}let{address:G,publicKey:X}=await Z({operation:(B)=>B.getAddress(Q)});async function F(B){let[{encode:z},{hashes:W}]=await Promise.all([import("ripple-binary-codec"),import("xrpl")]),V={...NY(B),Flags:B.Flags||MY,SigningPubKey:X.toUpperCase()},M=z(V),N=await Z({operation:(y)=>y.signTransaction(Q,M),requiredUserInteraction:T.SignTransaction}),_=z({...V,TxnSignature:N});return{hash:W.hashSignedTx(_),tx_blob:_}}return{getAddress:()=>G,signTransaction:F}}import{hex as i}from"@scure/base";import{derivationPathToString as LY,NetworkDerivationPath as _Y,SwapKitError as a}from"@swapkit/helpers";var KY=3364600;function N8($){return(typeof $==="string"?$:LY($)).replace(/^m\//,"").replace(/^\/+/,"")}function T0($){let Y=N8($),J=/^44'\/133'\/(\d+)'(?:\/(0|1)\/(\d+))?$/.exec(Y);if(!J)throw new a("wallet_ledger_invalid_params",{path:Y,reason:"Expected a Zcash BIP44 path with coin type 133"});let j=Number(J[1]),Q=`44'/133'/${j}'`;return{account:j,accountPath:Q,fullPath:`${Q}/${J[2]??0}/${J[3]??0}`}}function RY($){let Y=new Uint8Array(4);return new DataView(Y.buffer).setUint32(0,$>>>0,!0),Y}function wY($){let Y=new Uint8Array(8);return new DataView(Y.buffer).setBigUint64(0,$,!0),Y}function M0($,Y){return new a({errorKey:"wallet_ledger_invalid_params",info:$},Y)}function UY({bytes:$,offset:Y}){if(Y+4>$.length)throw Error("Unexpected end of previous transaction");return new DataView($.buffer,$.byteOffset+Y,4).getUint32(0,!0)}function OY($){let Y=0;function J(Q){if(Y+Q>$.length)throw Error(`Previous transaction ends before byte ${Y+Q}`);return Y+=Q,$.slice(Y-Q,Y)}function j(){let Q=J(1)[0]??0;if(Q<253)return Q;let Z=new DataView(J(Q===253?2:Q===254?4:8).buffer),G=Z.byteLength===2?Z.getUint16(0,!0):Z.byteLength===4?Z.getUint32(0,!0):Number(Z.getBigUint64(0,!0));if(!Number.isSafeInteger(G))throw Error("Previous transaction compact-size value exceeds safe range");return G}return{compactSize:j,rest:()=>J($.length-Y),take:J,varBytes:()=>J(j())}}function fY({bytes:$,version:Y}){let J=OY($),j=J.take(Y===4?8:20),Q=[];for(let B=J.compactSize();Q.length<B;){let z=J.take(36),W=J.varBytes(),V=J.take(4);Q.push({prevout:z,script:W,sequence:V})}let Z=[];for(let B=J.compactSize();Z.length<B;){let z=J.take(8),W=J.varBytes();Z.push({amount:z,script:W})}let G={inputs:Q,nVersionGroupId:j.slice(4,8),outputs:Z,version:j.slice(0,4)};if(Y>=5)return{...G,consensusBranchId:j.slice(8,12),locktime:j.slice(12,16),nExpiryHeight:j.slice(16,20)};let X=J.take(4),F=J.take(4);return{...G,extraData:J.rest(),locktime:X,nExpiryHeight:F}}function L8({hash:$,txid:Y}){let J=$.toLowerCase();return J===i.encode(Y)||J===i.encode(Y.slice().reverse())}async function kY($){let{CompactSize:Y,utils:J}=await import("@swapkit/utxo-signer"),j=Array.from({length:$.outputsLength},(Q,Z)=>$.getOutput(Z));return J.concatBytes(Y.encode(BigInt(j.length)),...j.flatMap(({amount:Q,script:Z})=>[wY(Q),Y.encode(BigInt(Z.length)),Z]))}async function bY($){let{ZCASH_IRONWOOD_ACTIVATION_HEIGHT:Y,ZcashConsensusBranchId:J}=await import("@swapkit/utxo-signer");switch($){case J.NU6_2:return KY;case J.IRONWOOD:return Y;default:throw new a("wallet_ledger_invalid_params",{consensusBranchId:$,reason:"Ledger Zcash DSK signing supports NU6.2 and Ironwood target branches"})}}async function AY({inputIndex:$,utxo:Y}){let{hash:J,index:j,txHex:Q}=Y,Z={inputIndex:$,outputIndex:j,txid:J};if(!Q)throw M0({...Z,reason:"Zcash Ledger signing requires the full previous transaction txHex for every input"});function G(M){try{return M()}catch(N){throw M0({...Z,reason:N instanceof Error?N.message:String(N)},N)}}let X=G(()=>i.decode(Q.replace(/^0x/i,""))),F=G(()=>UY({bytes:X,offset:0})),B=F&2147483647;if((F&2147483648)===0||B<4||B>6)throw M0({...Z,reason:"Ledger Zcash signing supports only overwintered v4, v5 and v6 previous transactions",version:B});let z=G(()=>fY({bytes:X,version:B}));if(j<0||j>=z.outputs.length)throw M0({...Z,outputCount:z.outputs.length,reason:"Zcash input references an output outside its previous transaction"});if(B>=5)return{...z,serializedPreviousTransactionOverride:X};let{utils:W}=await import("@swapkit/utxo-signer"),V=W.sha256x2(X);if(!L8({hash:J,txid:V}))throw M0({...Z,previousTxid:i.encode(V.reverse()),reason:"Previous transaction does not hash to the input txid"});return z}function DY({accountPath:$,derivationPaths:Y,inputUtxos:J,tx:j}){if(J.length!==j.inputsLength||Y.length!==j.inputsLength)throw new a("wallet_ledger_invalid_params",{derivationPathCount:Y.length,inputCount:j.inputsLength,inputUtxoCount:J.length,reason:"Zcash input UTXOs and derivation paths must match the transaction input count"});return J.forEach((Q,Z)=>{let G=j.getInput(Z);if(!L8({hash:Q.hash,txid:G.txid})||Q.index!==G.index)throw M0({inputIndex:Z,reason:"Zcash input UTXO does not match the transaction input",transactionInput:{index:G.index,txid:i.encode(G.txid)},utxo:{hash:Q.hash,index:Q.index}})}),Y.map((Q)=>{let Z=T0(Q);if(Z.accountPath!==$)throw new a("wallet_ledger_invalid_params",{accountPath:$,path:Z.fullPath,reason:"All Zcash input derivation paths must belong to the configured account"});return Z.fullPath})}function yY($){let Y=$.replace(/^0x/i,""),J=i.decode(Y);if(J.length<4||(new DataView(J.buffer,J.byteOffset,4).getUint32(0,!0)&2147483647)!==5)throw new a("wallet_ledger_invalid_response",{reason:"Ledger Zcash signer did not return a version 5 transaction"});return Y}function _8({derivationPath:$=_Y.ZEC,dmkSession:Y,onDeviceActionState:J,transport:j}={}){let Q=T0($),Z=j?K$($,j):void 0,G=Y0({build:async(W)=>{let{SignerZcashBuilder:V}=await import("../chunk-42xrtarj.js");return new V(W).build()},dmkSession:Y});function X(){if(Z)throw new a("wallet_ledger_invalid_params",{reason:"A Device Signer Kit operation is unavailable when a legacy transport is supplied"});return G()}async function F({checkOnDevice:W=!1,path:V=Q.fullPath}={}){let M=await X();return E({action:()=>M.getAddress(V,{checkOnDevice:W}),onDeviceActionState:J})}async function B({path:W=Q.accountPath,xpubVersion:V=76067358}={}){let M=T0(W);if(M.fullPath!==`${M.accountPath}/0/0`||N8(W).split("/").length!==3)throw new a("wallet_ledger_invalid_params",{path:W,reason:"Zcash extended public keys are exported at account level"});let N={dmkSession:j?void 0:Y??await r(),onDeviceActionState:J,transport:j},{default:_}=await import("@ledgerhq/hw-app-btc");return x({appName:"Zcash",connection:N,createApp:(w)=>new _({currency:"zcash",transport:w}),operation:(w)=>w.getWalletXpub({path:M.accountPath,xpubVersion:V})})}async function z({changePath:W,derivationPaths:V,inputUtxos:M,tx:N}){let _=DY({accountPath:Q.accountPath,derivationPaths:V??Array.from({length:N.inputsLength},()=>Q.fullPath),inputUtxos:M,tx:N});if(Z)throw new a("wallet_ledger_invalid_params",{reason:"Zcash signing requires a Ledger DMK session instead of a legacy transport"});let w=await bY(N.consensusBranchId),y=await Promise.all(M.map(async(b,C)=>[await AY({inputIndex:C,utxo:b}),b.index,null,N.getInput(C).sequence??4294967295])),I={additionals:["zcash","sapling"],associatedKeysets:_,blockHeight:w,changePath:W?T0(W).fullPath:Q.fullPath,expiryHeight:RY(N.expiryHeight),inputs:y,lockTime:N.lockTime,outputScriptHex:i.encode(await kY(N))},L=await X(),K=await E({action:()=>L.signTransaction(I),onDeviceActionState:J});return yY(K)}return{connect:async()=>{if(Z)return Z.connect();await X()},disconnect:async()=>Z?.disconnect(),getAddress:async()=>{if(Z)return Z.getAddress();return(await F()).address},getAddressAndPubKey:async()=>{if(Z)return{address:await Z.getAddress()};let{address:W,chainCode:V,publicKey:M}=await F();return{address:W,chainCode:i.encode(V),publicKey:i.encode(M)}},getExtendedPublicKey:B,showAddressAndPubKey:async()=>{if(Z)return{address:await Z.getAddress()};let{address:W,chainCode:V,publicKey:M}=await F({checkOnDevice:!0});return{address:W,chainCode:i.encode(V),publicKey:i.encode(M)}},signTransaction:z,signTransactionWithMultiplePaths:async(W)=>z(W)}}async function u({chain:$,dmkSession:Y,derivationPath:J,onDeviceActionState:j,originToken:Q,transport:Z}){let G=IY.includes($);if(Y&&Z)throw new t0("wallet_ledger_invalid_params",{message:"Provide either a Ledger DMK session or a LedgerJS transport, not both"});if(G&&Z)throw new t0("wallet_ledger_invalid_params",{message:"Ledger EVM clients require a DMK session instead of a LedgerJS transport"});let X={derivationPath:J??EY[$],dmkSession:Y,onDeviceActionState:j,transport:Z},{match:F}=await import("ts-pattern");return F($).returnType().with(U.THORChain,()=>Promise.resolve(new a0(X))).with(U.Cosmos,()=>Promise.resolve(new o0(X))).with(U.Bitcoin,()=>Promise.resolve(D$(X))).with(U.BitcoinCash,()=>Promise.resolve(N$(X))).with(U.Dash,()=>Promise.resolve(_$(X))).with(U.Dogecoin,()=>Promise.resolve(L$(X))).with(U.Litecoin,()=>Promise.resolve(M$(X))).with(U.Zcash,()=>Promise.resolve(_8(X))).with(U.Ripple,()=>Promise.resolve(M8(X))).with(U.Stellar,()=>Promise.resolve(n$(X))).with(U.Cardano,()=>Promise.resolve(I$(X))).with(U.Tron,()=>Promise.resolve(H8(X))).with(U.Sui,()=>Promise.resolve(a$(X))).with(U.Ton,()=>Promise.resolve(q8(X))).with(U.Near,()=>Promise.resolve(s$(X))).with(U.Arbitrum,U.Arc,U.Aurora,U.Avalanche,U.Berachain,U.BinanceSmartChain,U.Ethereum,U.Gnosis,U.Monad,U.Optimism,U.Polygon,U.Base,U.Robinhood,U.XLayer,async()=>{let{getProvider:B}=await import("@swapkit/toolboxes/evm"),z={derivationPath:J,dmkSession:Y,onDeviceActionState:j,originToken:Q,provider:await B($)};return F($).with(U.BinanceSmartChain,()=>c$(z)).with(U.Avalanche,()=>S$(z)).with(U.Arbitrum,()=>C$(z)).with(U.Arc,()=>v$(z)).with(U.Berachain,()=>o$(z)).with(U.Optimism,()=>g$(z)).with(U.Polygon,()=>h$(z)).with(U.Base,()=>x$(z)).with(U.Aurora,()=>P$(z)).with(U.Gnosis,()=>l$(z)).with(U.Monad,()=>d$(z)).with(U.Robinhood,()=>u$(z)).with(U.XLayer,()=>p$(z)).otherwise(()=>m$(z))}).otherwise(()=>{throw new t0("wallet_chain_not_supported",{chain:$,wallet:TY.LEDGER})})}var A8=[q.Arbitrum,q.Arc,q.Aurora,q.Avalanche,q.Base,q.Berachain,q.BinanceSmartChain,q.Bitcoin,q.BitcoinCash,q.Cardano,q.Cosmos,q.Dash,q.Dogecoin,q.Ethereum,q.Gnosis,q.Litecoin,q.Monad,q.Near,q.Optimism,q.Polygon,q.Ripple,q.Robinhood,q.Stellar,q.Sui,q.THORChain,q.Ton,q.XLayer,q.Tron,q.Zcash],cY=[q.BitcoinCash,q.Bitcoin,q.Dash,q.Dogecoin,q.Litecoin,q.Zcash],D8=[q.Ethereum,q.Avalanche,q.Arbitrum,q.Arc,q.Berachain,q.Optimism,q.Polygon,q.BinanceSmartChain,q.Base,q.Aurora,q.Gnosis,q.Monad,q.Robinhood,q.XLayer];function dY($){return A8.includes($)}var pY=hY({connect:({addChain:$,supportedChains:Y,walletType:J})=>async function(Q,Z,{address:G,dmkSession:X,onDeviceActionState:F,originToken:B,transport:z}={}){let[W]=vY({chains:Q,supportedChains:Y,walletType:J});if(!W)return!1;let V=Z??SY[W],M=await Z1({address:G,chain:W,derivationPath:V,dmkSession:X,onDeviceActionState:F,originToken:B,transport:z});return $({...M,chain:W,walletType:N0.LEDGER}),!0},getExtendedPublicKey:sY,name:"connectLedger",signingSupport:{...Object.fromEntries(D8.map(($)=>[$,{direct:!0,typedData:!0}])),[q.Bitcoin]:{direct:!0},[q.BitcoinCash]:{direct:!0},[q.Cardano]:{direct:!0},[q.Cosmos]:{direct:!0},[q.Dash]:{direct:!0},[q.Dogecoin]:{direct:!0},[q.Litecoin]:{direct:!0},[q.Near]:{direct:!0},[q.Ripple]:{direct:!0},[q.Stellar]:{direct:!0},[q.Sui]:{direct:!0},[q.THORChain]:{direct:!0},[q.Ton]:{direct:!0},[q.Tron]:{direct:!0}},supportedChains:[...A8],walletType:N0.LEDGER}),G5=uY(pY);function y8({chain:$,path:Y,signer:J,xpubVersion:j}){let Q=U0($).with(q.Bitcoin,q.Litecoin,()=>Y).with(q.BitcoinCash,q.Dash,q.Dogecoin,q.Zcash,()=>Y.replace(/^m\//,"")).exhaustive();return U0($).with(q.Bitcoin,()=>J.getExtendedPublicKey({path:Q})).with(q.Zcash,()=>J.getExtendedPublicKey({path:Q,xpubVersion:j})).with(q.BitcoinCash,q.Dash,q.Dogecoin,q.Litecoin,()=>J.getExtendedPublicKey(Q,j)).exhaustive()}function oY($){let Y=b8(q.Zcash),J=D0((j)=>Y.getRawTx(j));return Promise.all(Array.from({length:$.inputsLength},async(j,Q)=>{let Z=$.getInput(Q),G=K8.encode(Z.txid),X=K8.encode(Z.txid.slice().reverse()),F=await J(G),[B,z]=F?[G,F]:[X,await J(X)];if(!z)throw new t("wallet_ledger_invalid_params",{inputIndex:Q,outputIndex:Z.index,reason:"Unable to resolve previous transaction hex for Ledger signing in either txid byte order",reversedTxid:X,txid:G});return{hash:B,index:Z.index,txHex:z,value:Number(Z.value)}}))}async function sY($,Y,{accountIndex:J,dmkSession:j,onDeviceActionState:Q,transport:Z}={}){if(![q.BitcoinCash,q.Bitcoin,q.Dash,q.Dogecoin,q.Litecoin,q.Zcash].includes($))throw new t("wallet_chain_not_supported",{chain:$,wallet:N0.LEDGER});let G=$,X=await u({chain:G,derivationPath:Y,dmkSession:j,onDeviceActionState:Q,transport:Z});if(!X.getExtendedPublicKey)return;let F=k8({accountIndex:J,chain:G,derivationPath:Y}),B=v0(F),z=f8(G).bip32.public;try{let W=await y8({chain:G,path:B,signer:X,xpubVersion:z});return{accountIndex:e0(F),path:B,xpub:W}}finally{await X.disconnect?.()}}async function iY({address:$,chain:Y,dmkSession:J,derivationPath:j,onDeviceActionState:Q,transport:Z}){let{getUtxoToolbox:G}=await import("@swapkit/toolboxes/utxo"),X=Y,F=await u({chain:Y,derivationPath:j,dmkSession:J,onDeviceActionState:Q,transport:Z}),B=$??await o({chain:Y,ledgerClient:F}),z=(Y===q.Bitcoin?PY(j):void 0)??gY(B,X),{publicKey:W,signLedgerTransaction:V,toolboxSigner:M}=await U0(Y).with(q.Bitcoin,async()=>{let R=F,k=z===C0.P2SH_P2WPKH||z===C0.P2TR?await R.getPublicKey():void 0;return{publicKey:k,signLedgerTransaction:({inputUtxos:f,transaction:A})=>R.signTransactionHex({inputUtxos:f,tx:A}),toolboxSigner:{getAddress:R.getAddress,publicKey:k,signTransaction:R.signTransaction}}}).with(q.BitcoinCash,q.Dogecoin,q.Dash,q.Litecoin,async()=>{let{createLegacyPsbtSigner:R,signLegacyPsbtTransaction:O}=await import("../chunk-tm5gk51g.js"),k=F;return{publicKey:void 0,signLedgerTransaction:({inputUtxos:f,transaction:A})=>O({chain:X,inputUtxos:f,legacyClient:k,tx:A}),toolboxSigner:R({address:B,chain:X,legacyClient:k})}}).with(q.Zcash,()=>{let R=F;return{publicKey:void 0,signLedgerTransaction:async({inputUtxos:O,transaction:k})=>{if(!("consensusBranchId"in k))throw new t("wallet_ledger_method_not_supported",{method:"signPCZT",wallet:N0.LEDGER});let f=O??await oY(k);return R.signTransaction({inputUtxos:f,tx:k})},toolboxSigner:void 0}}).exhaustive(),N=M?await G(X,{scriptType:z,signer:M}):G(X,{scriptType:z}),_=async(R)=>N.broadcastTx(await V({transaction:R})),w=async(R)=>{let O=R.feeRate||(await N.getFeeRates())[R.feeOptionKey||R8.Fast],{tx:k,inputs:f}=await N.createTransaction({...R,feeRate:O,fetchTxHex:!0,publicKey:R.publicKey??W,sender:B}),A=await V({inputUtxos:f,transaction:k});return await N.broadcastTx(A)};async function y({accountIndex:R}={}){if(!F.getExtendedPublicKey)return;let O=k8({accountIndex:R,chain:X,derivationPath:j}),k=v0(O),f=f8(X).bip32.public,A=await y8({chain:Y,path:k,signer:F,xpubVersion:f});return{accountIndex:e0(O),path:k,xpub:A}}function I(R={}){return y(R)}async function L({accountIndex:R,index:O,change:k=!1}){try{let f=U8({accountIndex:R,chain:X,change:k,derivationPath:j,index:O}),A=await u({chain:X,derivationPath:f,dmkSession:J,onDeviceActionState:Q,transport:Z}),P=await o({chain:X,ledgerClient:A});return{accountIndex:e0(f),address:P,change:k,index:O,path:v0(f),pubkey:""}}catch{return}}async function K({accountIndex:R,count:O,startIndex:k=0,change:f=!1}){return w8("count",O),w8("startIndex",k),(await Promise.all(Array.from({length:O},(P,v)=>L({accountIndex:R,change:f,index:k+v})))).filter((P)=>!!P)}let b=lY({chain:X,deriveAddress:L,getBalance:N.getBalance,getUtxos:(R)=>b8(X).getUtxos({address:R,fetchTxHex:!0})});async function C({utxos:R,recipient:O,assetValue:k,memo:f,feeRate:A,feeOptionKey:P,changeAddress:v}){if(Y===q.Zcash)throw new t("wallet_ledger_method_not_supported",{method:"transferFromMultipleAddresses",wallet:N0.LEDGER});if(!R.length)throw new t("wallet_ledger_invalid_params",{message:"No UTXOs provided for multi-address transfer"});let S=A||(await N.getFeeRates())[P||R8.Fast],c=f?mY(f):null,Q0=[{address:O,value:k.getBaseValue("number")}];if(c)Q0.push({script:c,value:0});let e=R.map(({hash:f0,index:k0,value:S0,txHex:b0,witnessUtxo:T8})=>({hash:f0,index:k0,txHex:b0,value:S0,witnessUtxo:T8})),{inputs:n,outputs:L0}=N.accumulative({chain:X,feeRate:S,inputs:e,outputs:Q0});if(!(n&&L0))throw new t("wallet_ledger_connection_error",{message:"Insufficient balance for multi-address transfer"});let{Transaction:O0}=await import("@swapkit/utxo-signer"),P0=new O0({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!c,version:1}),I8=v||R[0]?.address||O;xY({chain:X,compiledMemo:c,inputs:n,outputs:L0,sender:I8,tx:P0});let $$=n.map((f0)=>{let k0=R.find((b0)=>b0.hash===f0.hash&&b0.index===f0.index),S0=U8({chain:X,change:k0?.isChange??!1,derivationPath:j,index:k0?.derivationIndex??0});return v0(S0)});if(!F.signTransactionWithMultiplePaths)throw new t("wallet_ledger_method_not_supported",{method:"signTransactionWithMultiplePaths"});let E8=await U0(Y).with(q.Bitcoin,()=>F.signTransactionWithMultiplePaths({derivationPaths:$$,inputUtxos:n,tx:P0})).with(q.BitcoinCash,q.Dash,q.Dogecoin,q.Litecoin,()=>F.signTransactionWithMultiplePaths(P0,n,$$)).exhaustive();return N.broadcastTx(E8)}return{...N,...b,address:B,deriveAddressAtIndex:L,deriveAddresses:K,getExtendedPublicKey:I,getExtendedPublicKeyInfo:y,signAndBroadcastTransaction:_,transfer:w,transferFromMultipleAddresses:C}}async function nY({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,originToken:Q,transport:Z}){let G=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,originToken:Q,transport:Z}),{getEvmToolboxAsync:X}=await import("@swapkit/toolboxes/evm"),F=await o({chain:$,ledgerClient:G});return{...await X($,{signer:G}),address:F}}async function rY({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}){let Z=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}),{getCosmosToolbox:G}=await import("@swapkit/toolboxes/cosmos"),X=G($,{signer:Z}),F=await o({chain:$,ledgerClient:Z});return{...X,address:F}}async function aY({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}){let Z=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}),{getCosmosToolbox:G}=await import("@swapkit/toolboxes/cosmos"),X=G($,{signer:Z}),F=await o({chain:$,ledgerClient:Z}),{sign:B}=Z;return{...X,address:F,signMessage:B}}async function tY({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}){let{getNearToolbox:Z}=await import("@swapkit/toolboxes/near"),G=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}),X=await G.getAddress();return{...Z({signer:G}),address:X}}async function eY({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}){let{getCardanoToolbox:Z}=await import("@swapkit/toolboxes/cardano"),G=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}),X=G.getAddress();return{...Z({signer:G}),address:X}}async function $1({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}){let{getRippleToolbox:Z}=await import("@swapkit/toolboxes/ripple"),G=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}),X=G.getAddress();return{...Z({signer:G}),address:X}}async function Y1({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}){let{getStellarToolbox:Z}=await import("@swapkit/toolboxes/stellar"),G=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}),X=await o({chain:$,ledgerClient:G});return{...Z({signer:G}),address:X}}async function J1({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}){let{getTronToolbox:Z}=await import("@swapkit/toolboxes/tron"),G=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}),X=await o({chain:$,ledgerClient:G});return{...Z({signer:G}),address:X}}async function j1({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}){let{getSuiToolbox:Z}=await import("@swapkit/toolboxes/sui"),G=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}),X=await o({chain:$,ledgerClient:G});return{...Z({signer:G}),address:X}}async function Q1({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}){let{getTONToolbox:Z}=await import("@swapkit/toolboxes/ton"),G=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}),X=await o({chain:$,ledgerClient:G}),F=Z(),B=async(M)=>F.broadcastTransaction(await G.signTransaction(M));return{...F,address:X,estimateTransactionFee:({assetValue:M})=>Promise.resolve(CY.from({chain:q.Ton,value:M.isGasAsset?"0.01":"0.06"})),getAddress:()=>X,getBalance:()=>F.getBalance(X),sign:()=>{throw new t("wallet_ledger_method_not_supported",{method:"sign",wallet:N0.LEDGER})},signAndBroadcastTransaction:B,transfer:async({assetValue:M,memo:N,recipient:_,sweep:w})=>B(await F.createTransaction({assetValue:M,memo:N,recipient:_,sender:X,sweep:w}))}}function Z1($){if(!dY($.chain))throw new t("wallet_ledger_chain_not_supported",{chain:$.chain});return U0($.chain).with(O8.union(...cY),(Y)=>iY({...$,chain:Y})).with(O8.union(...D8),(Y)=>nY({...$,chain:Y})).with(q.Cosmos,(Y)=>rY({...$,chain:Y})).with(q.THORChain,(Y)=>aY({...$,chain:Y})).with(q.Near,(Y)=>tY({...$,chain:Y})).with(q.Ripple,(Y)=>$1({...$,chain:Y})).with(q.Stellar,(Y)=>Y1({...$,chain:Y})).with(q.Cardano,(Y)=>eY({...$,chain:Y})).with(q.Tron,(Y)=>J1({...$,chain:Y})).with(q.Sui,(Y)=>j1({...$,chain:Y})).with(q.Ton,(Y)=>Q1({...$,chain:Y})).exhaustive()}export{Z$ as preloadLedgerDMK,pY as ledgerWallet,sY as getLedgerExtendedPublicKey,r as getLedgerDMKSession,X$ as disconnectLedgerDMKSession,G5 as LEDGER_SUPPORTED_CHAINS};
|
|
1
|
+
import{Ga as D0,Ha as f$,Ia as c0}from"../chunk-dhhmywmb.js";import{Ka as y$}from"../chunk-97nsp4z6.js";import{La as O$}from"../chunk-2tzsz8f3.js";import{ce as H}from"../chunk-9a9gn4pb.js";import{hex as K9}from"@scure/base";import{AssetValue as v1,Chain as q,derivationPathToString as v0,FeeOption as R9,filterSupportedChains as P1,getUTXOScriptTypeForPath as S1,NetworkDerivationPath as x1,SwapKitError as t,UTXOScriptType as C0,WalletOption as N0}from"@swapkit/helpers";import{addInputsAndOutputs as m1,assertDerivationIndex as w9,compileMemo as l1,createHDWalletHelpers as g1,getNetworkForChain as f9,getScriptTypeForAddress as h1,getUTXOAccountIndexFromPath as e0,getUTXOAccountPath as k9,getUTXOAddressPath as U9,getUtxoApi as b9}from"@swapkit/toolboxes/utxo";import{createWallet as u1,getWalletSupportedChains as c1}from"@swapkit/wallet-core";import{match as U0,P as O9}from"ts-pattern";import{SwapKitError as Z0}from"@swapkit/helpers";import{filter as c9,firstValueFrom as J$,map as d9,timeout as p9}from"rxjs";import{SwapKitError as A0}from"@swapkit/helpers";import{match as Y$}from"ts-pattern";var x0={Completed:"completed",Error:"error",Stopped:"stopped"},T={None:"none",SignTransaction:"sign-transaction",VerifyAddress:"verify-address"},C9=new Set(["6985","5501"]),$0=["6986"],v9=new Set(["5515"]),P9=new Set(["6511","6807","6d00","6e00"]),S9=new Set(["DeviceDisconnectedBeforeSendingApdu","DeviceDisconnectedWhileSendingError","DeviceNotRecognizedError","DeviceSessionNotFound","NoAccessibleDeviceError","ReconnectionFailedError"]),x9=new Set(["DisconnectedDevice","DisconnectedDeviceDuringOperation"]),m9=new Set(["UserRefusedOnDevice"]),l9=4,g9=/^(?:0x)?([0-9a-f]{4})$/i;function h9($){let Y=[],J=$;while(Y.length<l9&&typeof J==="object"&&J!==null){let j=J;Y.push(j),J=j.originalError}return Y}function u9({errorCode:$,statusCode:Y}){let J=typeof $==="string"?g9.exec($)?.[1]:void 0;if(J)return J.toLowerCase();return typeof Y==="number"?Y.toString(16).padStart(4,"0"):void 0}function p($,{userRefusedStatusWords:Y=[]}={}){let J=h9($),j=J.find((z)=>z instanceof A0);if(j)return j;let Q=J.flatMap(({_tag:z})=>typeof z==="string"?[z]:[]),Z=J.flatMap(({name:z})=>typeof z==="string"?[z]:[]),G=J.map(u9).find((z)=>z!==void 0),X=J.map((z)=>z.message).filter((z)=>typeof z==="string"&&z.length>0).at(-1),F=new Set([...C9,...Y]),B=Y$({errorNames:Z,errorTags:Q,statusWord:G}).when(({errorNames:z,errorTags:W,statusWord:V})=>W.includes("RefusedByUserDAError")||z.some((M)=>m9.has(M))||!!V&&F.has(V),()=>"wallet_connection_rejected_by_user").when(({errorTags:z,statusWord:W})=>z.includes("DeviceLockedError")||!!W&&v9.has(W),()=>"wallet_ledger_device_locked").when(({errorTags:z,statusWord:W})=>z.includes("UnsupportedApplicationDAError")||!!W&&P9.has(W),()=>"wallet_ledger_app_not_open").when(({errorNames:z,errorTags:W})=>W.some((V)=>S9.has(V))||z.some((V)=>x9.has(V)),()=>"wallet_ledger_connection_error").otherwise(()=>"wallet_ledger_transport_error");return new A0({errorKey:B,info:{errorTag:Q[0],message:X,statusWord:G}},$)}function E({action:$,onDeviceActionState:Y,userRefusedStatusWords:J}){return new Promise((j,Q)=>{let Z;try{Z=$().observable}catch(B){Q(p(B,{userRefusedStatusWords:J}));return}let G=!1,X;function F(B){if(G)return;G=!0,X?.unsubscribe(),B()}if(X=Z.subscribe({complete:()=>{F(()=>Q(new A0("wallet_ledger_invalid_response")))},error:(B)=>{F(()=>Q(p(B,{userRefusedStatusWords:J})))},next:(B)=>{try{Y?.(B)}catch(z){}Y$(B).with({status:x0.Completed},({output:z})=>F(()=>j(z))).with({status:x0.Error},({error:z})=>F(()=>Q(p(z,{userRefusedStatusWords:J})))).with({status:x0.Stopped},()=>F(()=>Q(new A0("wallet_ledger_connection_error")))).otherwise(()=>{return})}}),G)X.unsubscribe()})}var o9=1000,m0,h;function s9(){if(typeof navigator>"u"||!("hid"in navigator))return Promise.reject(new Z0("wallet_ledger_webhid_not_supported"));return Promise.all([import("../chunk-nb08g045.js"),import("../chunk-tgvgr630.js")]).then(([{DeviceManagementKitBuilder:$},{webHidTransportFactory:Y}])=>new $().addTransport(Y).build()).catch(($)=>{if(m0=void 0,$ instanceof Z0)throw $;throw new Z0("wallet_ledger_connection_error",$)})}function j$(){return m0??=s9(),m0}function l0(){return j$().then(($)=>Q$({dmk:$}))}function i9($){return typeof $==="object"&&$!==null&&"_tag"in $&&$._tag==="DeviceSessionNotFound"}function n9({dmk:$,sessionId:Y}){try{return $.getConnectedDevice({sessionId:Y}),!0}catch(J){return!1}}async function r9({sessionPromise:$}){let Y=$;try{let J=await Y;if(n9(J))return J;if(h===Y)h=l0();return h??=l0(),Y=h,await Y}catch(J){if(h===Y)h=void 0;if(J instanceof Z0)throw J;throw new Z0("wallet_ledger_connection_error",J)}}async function a9(){let $=typeof navigator>"u"?void 0:navigator.hid;if(typeof $?.getDevices!=="function")return!1;try{let[Y,{LEDGER_VENDOR_ID:J}]=await Promise.all([$.getDevices(),import("../chunk-nb08g045.js")]);return Y.some(({vendorId:j})=>j===J)}catch(Y){return!1}}async function t9({dmk:$}){if(!await a9())return;try{return await J$($.listenToAvailableDevices({}).pipe(d9(([Y])=>Y),c9((Y)=>Y!==void 0),p9({first:o9})))}catch(Y){return}}async function Q$({dmk:$}){let Y=!1;try{let J=await t9({dmk:$});if(J)return{dmk:$,sessionId:await $.connect({device:J})};let j=$.startDiscovering({});Y=!0;let Q=await J$(j),Z=await $.connect({device:Q});return{dmk:$,sessionId:Z}}catch(J){if(J instanceof Z0)throw J;throw new Z0("wallet_ledger_connection_error",J)}finally{if(Y)try{await $.stopDiscovering()}catch(J){}}}function r({dmk:$}={}){if($)return Q$({dmk:$});return h??=l0(),r9({sessionPromise:h})}function Y0({build:$,dmkSession:Y}){let J;return async function(){let Q=Y??await r();if(J?.session.dmk!==Q.dmk||J.session.sessionId!==Q.sessionId){let Z=Promise.resolve().then(()=>$(Q));J={session:Q,signer:Z};let G=J;Z.catch(()=>{if(J===G)J=void 0})}return J.signer}}function Z$(){let $=j$();return $.catch(()=>{return}),$}async function X$({dmkSession:$}={}){let Y=h,J=$;if(!J){if(!Y)return;if(h===Y)h=void 0;try{J=await Y}catch{return}}if(Y)try{let j=await Y;if(h===Y&&j.dmk===J.dmk&&j.sessionId===J.sessionId)h=void 0}catch(j){if(h===Y)h=void 0}try{await J.dmk.disconnect({sessionId:J.sessionId})}catch(j){if(i9(j))return;throw p(j)}}import{Chain as D,SwapKitError as e9,WalletOption as $Y}from"@swapkit/helpers";var o=async({chain:$,ledgerClient:Y})=>{if(!Y)return"";switch($){case D.Cosmos:case D.THORChain:return Y.connect();case D.Ethereum:case D.BinanceSmartChain:case D.Avalanche:case D.Polygon:case D.Arbitrum:case D.Arc:case D.Berachain:case D.Optimism:case D.Base:case D.Aurora:case D.Gnosis:case D.Monad:case D.Robinhood:case D.XLayer:return Y.getAddress();case D.Bitcoin:case D.BitcoinCash:case D.Dash:case D.Dogecoin:case D.Litecoin:case D.Zcash:{let J=Y;await J.connect();let j=await J.getAddress();return $===D.BitcoinCash?j.replace("bitcoincash:",""):j}case D.Near:return await Y.getAddress();case D.Ripple:return Y.getAddress();case D.Stellar:return Y.getAddress();case D.Cardano:return Y.getAddress();case D.Tron:return Y.getAddress();case D.Sui:return Y.connect();case D.Ton:return Y.getAddress();default:throw new e9("wallet_chain_not_supported",{chain:$,wallet:$Y.LEDGER})}};import{Chain as U,EVMChains as E1,NetworkDerivationPath as T1,SwapKitError as t0,WalletOption as C1}from"@swapkit/helpers";import{hex as s}from"@scure/base";import{HARDENED_OFFSET as R$,HDKey as w$}from"@scure/bip32";import{Chain as _0,derivationPathToString as VY,NetworkDerivationPath as qY,SwapKitError as d}from"@swapkit/helpers";import{match as k$}from"ts-pattern";import{hex as ZY}from"@scure/base";import{derivationPathToString as XY,getWalletFormatFor as u0,SwapKitError as q$}from"@swapkit/helpers";import{SwapKitError as YY}from"@swapkit/helpers";function JY($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function l({paramsOrPath:$,transport:Y}){if(JY($))return $;return{derivationPath:$,transport:Y}}async function x({appName:$,connection:Y,createApp:J,operation:j,requiredUserInteraction:Q=T.None}){let{dmkSession:Z,onDeviceActionState:G,transport:X}=Y;if(Z&&X)throw new YY("wallet_ledger_invalid_params",{message:"Provide either a Ledger DMK session or a LedgerJS transport, not both"});if(X)try{return await j(J(X))}catch(_){throw p(_)}let F=Z??await r(),[{CallTaskInAppDeviceAction:B,DmkResultFactory:z,UnknownDeviceExchangeError:W},{LedgerJsDmkTransport:V}]=await Promise.all([import("../chunk-nb08g045.js"),import("../chunk-grj9nvte.js")]),M=new B({input:{appName:$,requiredUserInteraction:Q,skipOpenApp:!1,task:async(_)=>{try{let w=await j(J(new V(_)));return z({data:{output:w}})}catch(w){return z({error:new W(w)})}}}});return(await E({action:()=>F.dmk.executeDeviceAction({deviceAction:M,sessionId:F.sessionId}),onDeviceActionState:G})).output}import{SwapKitError as jY}from"@swapkit/helpers";var G$=100,z$={cla:224,ins:74},g0=0,B$=128,QY=[0,144,0];function F$($,Y){let J=$[Y];if(J===void 0||J===255)return;if(J<253)return{size:1,value:J};let j=J===253?2:4;if(Y+1+j>$.length)return;let Q=new DataView($.buffer,$.byteOffset+Y+1,j);return{size:1+j,value:j===2?Q.getUint16(0,!0):Q.getUint32(0,!0)}}function h0($,Y){let J=(G,X={})=>new jY({errorKey:"wallet_ledger_invalid_params",info:{chain:Y,maxLength:G$,operation:"splitOutputsForLegacyApp",outputsLength:$.length,reason:G,...X}}),j=F$($,0);if(!j?.value)throw J("Transaction outputs do not start with a readable non-zero output count");let Q=[],Z=j.size;for(let G=0;G<j.value;G+=1){let X=G===0?0:Z,F=F$($,Z+8),B=F?Z+8+F.size+F.value:void 0;if(!B||B>$.length)throw J("Transaction output is truncated",{outputIndex:G});let z=B-X;if(z>G$)throw J("Output is longer than the Ledger app can check; shorten the memo",{outputIndex:G,pieceLength:z});Q.push($.subarray(X,B)),Z=B}if(Z!==$.length)throw J("Transaction outputs are followed by trailing bytes",{trailingBytes:$.length-Z});return Q}function V$($,Y){let J=[],j=async(Q,Z,G,X,F=Buffer.alloc(0),...B)=>{if(!(Q===z$.cla&&Z===z$.ins&&(G===g0||G===B$)))return $.send(Q,Z,G,X,F,...B);if(J.push(F),G===g0)return Buffer.from(QY);let W=Buffer.concat(J);J=[];let V=h0(W,Y),M=Buffer.alloc(0);for(let[N,_]of V.entries()){let w=N===V.length-1?B$:g0;M=await $.send(Q,Z,w,X,Buffer.from(_),...B)}return M};return new Proxy($,{get:(Q,Z,G)=>Z==="send"?j:Reflect.get(Q,Z,G)})}var W$=["bitcoin-cash","dash","dogecoin","zcash"],GY=["bitcoin-cash","dash","dogecoin","litecoin"],zY={bitcoin:"Bitcoin","bitcoin-cash":"Bitcoin Cash",dash:"Dash",dogecoin:"Dogecoin",litecoin:"Litecoin",zcash:"Zcash"},BY=({outputScriptHex:$,inputUtxos:Y,btcApp:J,derivationPath:j,chain:Q},Z)=>{let G=Y.map((z)=>{return[J.splitTransaction(z.txHex||"",!W$.includes(Q),Q==="zcash"),z.index,void 0,void 0]}),X=u0(j),F=X!=="legacy",B={additionals:X==="bech32"?["bech32"]:[],associatedKeysets:G.map(()=>j),inputs:G,outputScriptHex:$,segwit:F,useTrustedInputForSegwit:F};return J.createPaymentTransaction({...B,...Z})},FY=({outputScriptHex:$,inputUtxos:Y,btcApp:J,derivationPaths:j,chain:Q},Z)=>{if(j.length!==Y.length)throw new q$("wallet_ledger_invalid_params",{message:`Derivation paths count (${j.length}) must match inputs count (${Y.length})`});let G=Y.map((z)=>{return[J.splitTransaction(z.txHex||"",!W$.includes(Q),Q==="zcash"),z.index,void 0,void 0]}),X=u0(j[0]??""),F=X!=="legacy",B={additionals:X==="bech32"?["bech32"]:[],associatedKeysets:j,inputs:G,outputScriptHex:$,segwit:F,useTrustedInputForSegwit:F};return J.createPaymentTransaction({...B,...Z})},V0=({chain:$,additionalSignParams:Y})=>{let J=GY.includes($);return(j,Q)=>{let{derivationPath:Z,...G}=l({paramsOrPath:j,transport:Q}),X=typeof Z==="string"?Z:XY(Z),F=u0(X);async function B({operation:W,requiredUserInteraction:V}){let M=(await import("@ledgerhq/hw-app-btc")).default;return x({appName:zY[$],connection:G,createApp:(N)=>new M({currency:$,transport:J?V$(N,$):N}),operation:W,requiredUserInteraction:V})}async function z(W){let[{splitTransaction:V},{serializeTransactionOutputs:M}]=await Promise.all([import("@ledgerhq/hw-app-btc/splitTransaction"),import("@ledgerhq/hw-app-btc/serializeTransaction")]),N=M(V(ZY.encode(W.unsignedTx),!0));if(J)h0(N,$);return N.toString("hex")}return{connect:async()=>{await B({operation:async()=>!0})},disconnect:async()=>{},getAddress:async()=>{let{toCashAddress:W}=await import("@swapkit/toolboxes/utxo"),{bitcoinAddress:V}=await B({operation:(M)=>M.getWalletPublicKey(X,{format:F})});if(!V)throw new q$("wallet_ledger_get_address_error",{message:`Cannot get ${$} address from ledger derivation path: ${X}`});return $==="bitcoin-cash"&&F==="legacy"?W(V).replace(/(bchtest:|bitcoincash:)/,""):V},getExtendedPublicKey:async(W="84'/0'/0'",V=76067358)=>{return await B({operation:(M)=>M.getWalletXpub({path:W,xpubVersion:V})})},signTransaction:async(W,V)=>{let M=await z(W);return await B({operation:(N)=>BY({btcApp:N,chain:$,derivationPath:X,inputUtxos:V,outputScriptHex:M},Y),requiredUserInteraction:T.SignTransaction})},signTransactionWithMultiplePaths:async(W,V,M)=>{let N=await z(W);return await B({operation:(_)=>FY({btcApp:_,chain:$,derivationPaths:M,inputUtxos:V,outputScriptHex:N},Y),requiredUserInteraction:T.SignTransaction})}}}},H$=V0({chain:"bitcoin"}),M$=V0({chain:"litecoin"}),N$=V0({additionalSignParams:{additionals:["abc","cashaddr"],segwit:!1,sigHashType:65,useTrustedInputForSegwit:!0},chain:"bitcoin-cash"}),L$=V0({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dogecoin"}),_$=V0({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dash"}),K$=V0({additionalSignParams:{additionals:["zcash","sapling"],expiryHeight:(()=>{let $=Buffer.alloc(4);return $.writeUInt32LE(0),$})(),lockTime:0,segwit:!1,useTrustedInputForSegwit:!1},chain:"zcash"});function b$($){return(typeof $==="string"?$:VY($)).replace(/^m\//,"").replace(/^\/+/,"")}function U$({path:$,reason:Y}){return new d("wallet_ledger_invalid_params",{path:$,reason:Y})}function A$($){let Y=b$($),J=/^(44|49|84|86)'\/0'\/(\d+)'(?:\/(0|1)\/(\d+))?$/.exec(Y);if(!J)throw U$({path:Y,reason:"Expected a Bitcoin path with purpose 44, 49, 84, or 86 and coin type 0"});let j=Number(J[1]),Q=Number(J[2]),Z=Number(J[3]??0),G=Number(J[4]??0);if(Q>=R$||G>=R$)throw U$({path:Y,reason:"Account and address index must be below 2^31"});let X=`${j}'/0'/${Q}'`;return{accountPath:X,addressIndex:G,change:Z,fullPath:`${X}/${Z}/${G}`,purpose:j}}function WY($){if($.length!==4)throw new d("wallet_ledger_invalid_response",{reason:`Expected a 4-byte master fingerprint, received ${$.length}`});return new DataView($.buffer,$.byteOffset,$.byteLength).getUint32(0,!1)}function d0({count:$,tx:Y}){if($!==Y.inputsLength)throw new d("wallet_ledger_invalid_params",{reason:`Input metadata count (${$}) must match transaction inputs count (${Y.inputsLength})`})}function HY({accountPath:$,derivationPaths:Y,tx:J}){d0({count:Y.length,tx:J});let j=Y.map(A$),Q=j.find((Z)=>Z.accountPath!==$);if(Q)throw new d("wallet_ledger_invalid_params",{accountPath:$,path:Q.fullPath,reason:"All input derivation paths must belong to the configured Bitcoin account"});return j}function MY($){return import("../chunk-96p7njae.js").then(({DefaultDescriptorTemplate:Y})=>k$($).with(44,()=>Y.LEGACY).with(49,()=>Y.NESTED_SEGWIT).with(84,()=>Y.NATIVE_SEGWIT).with(86,()=>Y.TAPROOT).exhaustive())}function NY($){return"signature"in $&&"pubkey"in $}function J0({inputIndex:$,reason:Y}){return new d("wallet_ledger_invalid_response",{inputIndex:$,reason:Y})}async function LY({input:$,inputIndex:Y,previousTransaction:J}){if(!(J&&$.txid&&$.index!==void 0))throw J0({inputIndex:Y,reason:"PSBT input is missing its previous output"});let{RawTx:j,utils:Q}=await import("@swapkit/utxo-signer"),Z=j.encode({...J,segwitFlag:!1,witnesses:void 0}),G=Q.sha256x2(Z).reverse();if(s.encode(G)!==s.encode($.txid))throw new d("wallet_ledger_invalid_params",{inputIndex:Y,reason:"Previous transaction does not match the input txid"});let X=J.outputs[$.index];if(!X)throw J0({inputIndex:Y,reason:"Previous transaction has no spent output"});let{witnessUtxo:F}=$;if(F&&(F.amount!==X.amount||s.encode(F.script)!==s.encode(X.script)))throw new d("wallet_ledger_invalid_params",{inputIndex:Y,reason:"Input witnessUtxo does not match the previous transaction output"});return X}async function _Y({inputIndex:$,path:Y,publicKey:J,spentOutput:j}){let{p2pkh:Q,p2sh:Z,p2tr:G,p2wpkh:X}=await import("@swapkit/utxo-signer"),F=k$(Y.purpose).with(44,()=>Q(J).script).with(49,()=>Z(X(J)).script).with(84,()=>X(J).script).with(86,()=>G(J.slice(1)).script).exhaustive();if(s.encode(F)===s.encode(j.script))return;throw new d("wallet_ledger_invalid_params",{inputIndex:$,path:Y.fullPath,reason:"Input does not spend the script derived from its derivation path"})}function D$({derivationPath:$=qY.BTC,dmkSession:Y,onDeviceActionState:J,transport:j}={}){let Q=A$($),Z=j?H$($,j):void 0,G=Y0({build:async(L)=>{let{SignerBtcBuilder:K}=await import("../chunk-96p7njae.js");return new K(L).build()},dmkSession:Y}),X,F;function B(){if(Z)throw new d("wallet_ledger_invalid_params",{reason:"A Device Signer Kit operation is unavailable when a legacy transport is supplied"});return G()}function z(){if(!X){X=B().then(async(K)=>{let{extendedPublicKey:b}=await E({action:()=>K.getExtendedPublicKey(Q.accountPath),onDeviceActionState:J});return b});let L=X;L.catch(()=>{if(X===L)X=void 0})}return X}function W(){if(!F){F=B().then(async(K)=>{let{masterFingerprint:b}=await E({action:()=>K.getMasterFingerprint(),onDeviceActionState:J});return WY(b)});let L=F;L.catch(()=>{if(F===L)F=void 0})}return F}async function V(){let L=Z?await Z.getExtendedPublicKey(Q.accountPath):await z(),{publicKey:K}=w$.fromExtendedKey(L).derive(`m/${Q.change}/${Q.addressIndex}`);if(!K)throw new d("wallet_ledger_invalid_response",{path:Q.fullPath,reason:"Could not derive a public key from the Ledger account xpub"});return K}async function M(){let[{DefaultWallet:L},K]=await Promise.all([import("../chunk-96p7njae.js"),MY(Q.purpose)]);return new L(Q.accountPath,K)}async function N({inputUtxos:L,tx:K}){let{RawTx:b}=await import("@swapkit/utxo-signer"),R=Array.from({length:K.inputsLength},(O,k)=>k).some((O)=>!(K.getInput(O).nonWitnessUtxo||L?.[O]?.txHex))?await import("@swapkit/toolboxes/utxo").then(({getUtxoApi:O})=>{let k=O(_0.Bitcoin);return D0((f)=>k.getRawTx(f))}):void 0;return Promise.all(Array.from({length:K.inputsLength},async(O,k)=>{let f=K.getInput(k);if(f.nonWitnessUtxo)return f.nonWitnessUtxo;if(!f.txid)throw J0({inputIndex:k,reason:"PSBT input is missing its previous txid"});let A=L?.[k]?.txHex??await R?.(s.encode(f.txid));if(!A)throw new d("wallet_ledger_invalid_params",{inputIndex:k,reason:"Unable to resolve the previous transaction for Ledger signing"});return b.decode(s.decode(A))}))}async function _({inputUtxos:L,paths:K,tx:b}){let[C,R,O]=await Promise.all([z(),W(),N({inputUtxos:L,tx:b})]),{bip32Path:k}=await import("@swapkit/utxo-signer"),f=w$.fromExtendedKey(C),A=b.clone(),P=[];for(let[v,S]of K.entries()){let c=f.derive(`m/${S.change}/${S.addressIndex}`).publicKey;if(!c)throw new d("wallet_ledger_invalid_response",{inputIndex:v,reason:"Could not derive a public key from the Ledger account xpub"});P[v]=c;let Q0=A.getInput(v),e=O[v],n=await LY({input:Q0,inputIndex:v,previousTransaction:e});await _Y({inputIndex:v,path:S,publicKey:c,spentOutput:n});let L0={fingerprint:R,path:k(`m/${S.fullPath}`)};if(S.purpose===86){let O0=c.slice(1);A.updateInput(v,{tapBip32Derivation:[[O0,{der:L0,hashes:[]}]],tapInternalKey:O0,witnessUtxo:n})}else A.updateInput(v,{bip32Derivation:[[c,L0]],nonWitnessUtxo:e,witnessUtxo:S.purpose===44?void 0:n});await O$({chain:_0.Bitcoin,indexes:[v],publicKey:c,tx:A})}return{psbt:A,publicKeys:P}}async function w({inputUtxos:L,paths:K,tx:b}){let[C,R,{psbt:O,publicKeys:k}]=await Promise.all([B(),M(),_({inputUtxos:L,paths:K,tx:b})]),f=O.toPSBT(0),A=await E({action:()=>C.signPsbt(R,f),onDeviceActionState:J}),P=new Set;for(let v of A){if(!NY(v))throw J0({reason:"Unexpected MuSig2 signature"});let{inputIndex:S,pubkey:c}=v,Q0=K[S],e=k[S];if(!(Q0&&e)||P.has(S))throw J0({inputIndex:S,reason:"Unexpected or duplicate input signature"});if(P.add(S),Q0.purpose===86){if(v.tapleafHash)throw J0({inputIndex:S,reason:"Unexpected taproot script signature"});O.updateInput(S,{tapKeySig:v.signature});continue}if(s.encode(c)!==s.encode(e))throw J0({inputIndex:S,reason:"Signature public key does not match the input derivation"});O.updateInput(S,{partialSig:[[e,v.signature]]})}if(P.size!==O.inputsLength)throw J0({reason:`Ledger signed ${P.size} of ${O.inputsLength} inputs`});return O}function y(L){return L.finalize(),L.hex}function I({tx:L,inputUtxos:K}){if(K)d0({count:K.length,tx:L});if(Z)return K?Z.signTransaction(L,K):c0({chain:_0.Bitcoin,legacyClient:Z,tx:L});let b=Array.from({length:L.inputsLength},()=>Q);return w({inputUtxos:K,paths:b,tx:L}).then(y)}return{connect:async()=>{if(Z)return Z.connect();await B()},disconnect:async()=>Z?.disconnect(),getAddress:async()=>{if(Z)return Z.getAddress();let L=await B(),K=await M(),{address:b}=await E({action:()=>L.getWalletAddress(K,Q.addressIndex,{change:Q.change===1}),onDeviceActionState:J});if(!b)throw new d("wallet_ledger_get_address_error",{path:Q.fullPath});return b},getExtendedPublicKey:async({checkOnDevice:L=!1,path:K=Q.accountPath}={})=>{if(Z)return Z.getExtendedPublicKey(K);let b=await B(),C=b$(K),{extendedPublicKey:R}=await E({action:()=>b.getExtendedPublicKey(C,{checkOnDevice:L}),onDeviceActionState:J});return R},getPublicKey:V,showAddressAndPubKey:async()=>{if(Z)return{address:await Z.getAddress()};let L=await B(),K=await M();return E({action:()=>L.getWalletAddress(K,Q.addressIndex,{change:Q.change===1,checkOnDevice:!0}),onDeviceActionState:J})},signTransaction:async(L)=>{if(Z){let b=await c0({chain:_0.Bitcoin,legacyClient:Z,tx:L}),{Transaction:C}=await import("@swapkit/utxo-signer");return C.fromRaw(s.decode(b),{allowUnknownOutputs:!0})}let K=Array.from({length:L.inputsLength},()=>Q);return await w({paths:K,tx:L})},signTransactionHex:I,signTransactionWithMultiplePaths:async({derivationPaths:L,inputUtxos:K,tx:b})=>{if(K)d0({count:K.length,tx:b});let C=HY({accountPath:Q.accountPath,derivationPaths:L,tx:b});if(Z){let R=K??await f$(b,_0.Bitcoin);return Z.signTransactionWithMultiplePaths(b,R,C.map((O)=>`m/${O.fullPath}`))}return w({inputUtxos:K,paths:C,tx:b}).then(y)}}}import{hex as X0}from"@scure/base";import{Chain as G0,NetworkDerivationPath as KY,SwapKitError as q0}from"@swapkit/helpers";function RY($){return new q0("wallet_ledger_method_not_supported",{chain:G0.Cardano,reason:$})}async function wY({address:$,amount:Y,format:J,tokenGroups:j},Q,{AddressType:Z,TxOutputDestinationType:G,TxOutputFormat:X}){let{getCardanoAddressFromBytes:F}=await import("@swapkit/toolboxes/cardano"),z=await F($)===Q.address?{params:{params:{spendingPath:Q.paymentPath,stakingPath:Q.stakingPath},type:Z.BASE_PAYMENT_KEY_STAKE_KEY},type:G.DEVICE_OWNED}:{params:{addressHex:X0.encode($)},type:G.THIRD_PARTY},W=j?.map(({policyId:V,tokens:M})=>({policyIdHex:X0.encode(V),tokens:M.map(({amount:N,assetName:_})=>({amount:N,assetNameHex:X0.encode(_)}))}));return{amount:Y,destination:z,format:J==="legacy"?X.ARRAY_LEGACY:X.MAP_BABBAGE,...W===void 0?{}:{tokenBundle:W}}}async function UY($,Y,J){let{decodeCardanoTransaction:j}=await import("@swapkit/toolboxes/cardano"),{Networks:Q,TransactionSigningMode:Z,TxAuxiliaryDataType:G}=J,{body:X}=await j($),{auxiliaryDataHash:F,fee:B,inputs:z,outputs:W,tagCborSets:V,ttl:M,validityIntervalStart:N}=y$(X,"Ledger",RY);return{additionalWitnessPaths:[],options:{tagCborSets:V},signingMode:Z.ORDINARY_TRANSACTION,tx:{fee:B,inputs:z.map(({index:_,txHash:w})=>({outputIndex:_,path:Y.paymentPath,txHashHex:X0.encode(w)})),network:Q.Mainnet,outputs:await Promise.all(W.map((_)=>wY(_,Y,J))),...F?{auxiliaryData:{params:{hashHex:X0.encode(F)},type:G.ARBITRARY_HASH}}:{},...M===void 0?{}:{ttl:M},...N===void 0?{}:{validityIntervalStart:N}}}}async function OY($,{txHashHex:Y,witnesses:J},{paymentPath:j,publicKey:Q}){let{addCardanoVkeyWitnesses:Z,decodeCardanoTransaction:G}=await import("@swapkit/toolboxes/cardano"),{bodyHash:X}=await G($);if(Y.toLowerCase()!==X)throw new q0("wallet_ledger_invalid_signature",{chain:G0.Cardano,error:"Ledger signed a different transaction body"});if(J.length===0)throw new q0("wallet_ledger_signing_error",{chain:G0.Cardano,error:"Ledger returned no witness"});let F=J.map(({path:B,witnessSignatureHex:z})=>{if(B.length!==j.length||B.some((W,V)=>W!==j[V]))throw new q0("wallet_ledger_signing_error",{chain:G0.Cardano,error:"Ledger returned a witness for an unexpected key"});return{publicKey:Q,signature:X0.decode(z)}});return Z($,F)}async function I$($,Y){let{derivationPath:J,...j}=l({paramsOrPath:$,transport:Y}),Q=J||KY[G0.Cardano],[Z,G,X,F,B]=Q;if(Q.length!==5||F!==0||B===void 0)throw new q0("wallet_ledger_derivation_path_error",{chain:G0.Cardano,derivationPath:Q});let z=await import("@cardano-foundation/ledgerjs-hw-app-cardano"),{getCardanoAddressFromBytes:W,getCardanoPublicKeyHash:V}=await import("@swapkit/toolboxes/cardano"),{HARDENED:M,Networks:N}=z,_=[Z+M,G+M,X+M],w=[..._,0,B],y=[..._,2,0];function I({operation:f,requiredUserInteraction:A}){return x({appName:"Cardano ADA",connection:j,createApp:(P)=>new z.Ada(P),operation:f,requiredUserInteraction:A})}function L(f){let A=Buffer.from(f?.publicKeyHex??"","hex");if(A.length!==32)throw new q0("wallet_ledger_failed_to_get_address",{chain:G0.Cardano,derivationPath:Q});return A}let K=await I({operation:(f)=>f.getExtendedPublicKeys({paths:[w,y]})}),b=L(K[0]),C=L(K[1]),R=await V(b),O=await W(Buffer.concat([Buffer.from([N.Mainnet.networkId]),R,await V(C)]));async function k(f){let A=await UY(f,{address:O,paymentPath:w,stakingPath:y},z),P=await I({operation:(v)=>v.signTransaction(A),requiredUserInteraction:T.SignTransaction});return OY(f,P,{paymentPath:w,publicKey:b})}return{getAddress:()=>O,publicKey:b,publicKeyHash:R,signTransaction:k}}import{hex as p0}from"@scure/base";import{derivationPathToString as AY,NetworkDerivationPath as DY,SwapKitError as W0}from"@swapkit/helpers";var E$=0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141n,fY=E$>>1n;function kY($){return $.reduce((Y,J)=>Y<<8n|BigInt(J),0n)}function bY($){let Y=new Uint8Array(32),J=$;for(let j=31;j>=0;j-=1)Y[j]=Number(J&0xffn),J>>=8n;return Y}function y0($){let Y=kY($.subarray(32,64));if(Y<=fY)return $;let J=new Uint8Array(64);return J.set($.subarray(0,32),0),J.set(bY(E$-Y),32),J}function yY($){let Y=(typeof $==="string"?$:AY($)).replace(/^m\//,"").replace(/^\/+/,"");if(!/^44'\/118'\/\d+'\/(0|1)\/\d+$/.test(Y))throw new W0("wallet_ledger_invalid_params",{path:Y,reason:"Expected a five-level Cosmos derivation path with coin type 118"});return Y}async function T$($){let{Secp256k1Signature:Y}=await import("@cosmjs/crypto");try{return y0($.length===64?Y.fromFixedLength($).toFixedLength():Y.fromDer($).toFixedLength())}catch(J){throw new W0("wallet_ledger_invalid_response",J)}}class o0{chain="cosmos";derivationPath;onDeviceActionState;transport;legacyAppPromise;pubKey=null;getSessionSigner;constructor({derivationPath:$=DY.GAIA,dmkSession:Y,onDeviceActionState:J,transport:j}={}){this.derivationPath=yY($),this.getSessionSigner=Y0({build:async(Q)=>{let{SignerCosmosBuilder:Z}=await import("../chunk-dsa641rq.js");return new Z(Q).build()},dmkSession:Y}),this.onDeviceActionState=J,this.transport=j}getSigner(){if(this.transport)throw new W0("wallet_ledger_invalid_params",{reason:"A Device Signer Kit operation is unavailable when a legacy transport is supplied"});return this.getSessionSigner()}getLegacyApp(){if(!this.transport)throw new W0("wallet_ledger_invalid_params",{reason:"Legacy Cosmos transport is unavailable"});return this.legacyAppPromise??=import("@ledgerhq/hw-app-cosmos").then(({default:$})=>new $(this.transport)),this.legacyAppPromise}async runLegacyOperation($){let Y=await this.getLegacyApp();try{return await $(Y)}catch(J){throw p(J,{userRefusedStatusWords:$0})}}async signBytes($){if(this.transport){let j=await this.runLegacyOperation((Q)=>Q.sign(this.derivationPath,new TextDecoder().decode($)));if(j.return_code!==36864||!j.signature)throw new W0("wallet_ledger_invalid_response",{returnCode:j.return_code});return T$(j.signature)}let Y=await this.getSigner(),J=await E({action:()=>Y.signTransaction(this.derivationPath,this.chain,$),onDeviceActionState:this.onDeviceActionState,userRefusedStatusWords:$0});return T$(J)}async connect(){if(this.transport)await this.getLegacyApp();else await this.getSigner();let{address:$,publicKey:Y}=await this.getAddressAndPubKey();return this.pubKey=Buffer.from(Y,"hex").toString("base64"),$}async disconnect(){}async getAddressAndPubKey(){if(this.transport)return this.runLegacyOperation((j)=>j.getAddress(this.derivationPath,this.chain));let $=await this.getSigner(),{address:Y,publicKey:J}=await E({action:()=>$.getAddress(this.derivationPath,this.chain),onDeviceActionState:this.onDeviceActionState,userRefusedStatusWords:$0});return{address:Y,publicKey:p0.encode(J)}}async showAddressAndPubKey(){if(this.transport)return this.runLegacyOperation((j)=>j.getAddress(this.derivationPath,this.chain,!0));let $=await this.getSigner(),{address:Y,publicKey:J}=await E({action:()=>$.getAddress(this.derivationPath,this.chain,{checkOnDevice:!0}),onDeviceActionState:this.onDeviceActionState,userRefusedStatusWords:$0});return{address:Y,publicKey:p0.encode(J)}}async signTransaction($,Y="0"){let J=await this.signBytes(typeof $==="string"?new TextEncoder().encode($):$);if(!this.pubKey){let{publicKey:j}=await this.getAddressAndPubKey();this.pubKey=Buffer.from(j,"hex").toString("base64")}return[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:Y,signature:J}]}async signAmino($,Y){let j=(await this.getAccounts()).find(({address:X})=>X===$);if(!j)throw new W0("wallet_ledger_address_not_found",{address:$});let{encodeSecp256k1Signature:Q,serializeSignDoc:Z}=await import("@cosmjs/amino"),G=await this.signBytes(Z(Y));return{signature:Q(j.pubkey,G),signed:Y}}async getAccounts(){let{address:$,publicKey:Y}=await this.getAddressAndPubKey();return[{address:$,algo:"secp256k1",pubkey:p0.decode(Y)}]}}import{ChainId as m,derivationPathToString as IY,NetworkDerivationPath as EY,SwapKitError as z0}from"@swapkit/helpers";import{AbstractSigner as TY}from"ethers";function CY({primaryType:$,types:Y}){let J={};function j(Q){if(Object.hasOwn(J,Q)||!Object.hasOwn(Y,Q))return;let Z=Y[Q];if(!Z)return;J[Q]=Z;for(let G of Z)j(G.type.replace(/\[[0-9]*\]/g,""))}if(j($),!Object.hasOwn(J,$))throw new z0("wallet_ledger_invalid_params",{primaryType:$,reason:"The EIP-712 primary type is not defined"});return J}var vY={report:()=>Promise.resolve(void 0)};class g extends TY{chainId=m.Ethereum;derivationPath="";dmkSession;getLedgerSigner;onDeviceActionState;originToken;constructor({provider:$,dmkSession:Y,derivationPath:J=EY.OP,chainId:j=m.Optimism,onDeviceActionState:Q,originToken:Z}){super($);this.chainId=j||m.Ethereum,this.derivationPath=(typeof J==="string"?J:IY(J)).replace(/^m\//,""),this.dmkSession=Y,this.onDeviceActionState=Q,this.originToken=Z,this.getLedgerSigner=Y0({build:async(G)=>{let[{ContextModuleBuilder:X,ContextModuleChainID:F},{SignerEthBuilder:B}]=await Promise.all([import("../chunk-c8mwf9cn.js"),import("../chunk-xskdbz15.js")]),z=new X({loggerFactory:(W)=>G.dmk.getLoggerFactory()(["ContextModule",W]),originToken:Z}).setChain(F.Ethereum).setBlindSigningReporter(vY).build();return z.signReport=()=>Promise.resolve(),new B({...G,originToken:Z}).withContextModule(z).build()},dmkSession:Y}),Object.defineProperty(this,"provider",{enumerable:!0,value:$||null,writable:!1})}connect=($)=>new g({chainId:this.chainId,derivationPath:this.derivationPath,dmkSession:this.dmkSession,onDeviceActionState:this.onDeviceActionState,originToken:this.originToken,provider:$});getAddress=async()=>{let{address:$}=await this.getAddressAndPubKey();if(!$)throw new z0("wallet_ledger_failed_to_get_address");return $};getAddressAndPubKey=async()=>{let $=await this.getLedgerSigner();return E({action:()=>$.getAddress(this.derivationPath,{chainId:Number(this.chainId)}),onDeviceActionState:this.onDeviceActionState})};showAddressAndPubKey=async()=>{let $=await this.getLedgerSigner();return E({action:()=>$.getAddress(this.derivationPath,{chainId:Number(this.chainId),checkOnDevice:!0}),onDeviceActionState:this.onDeviceActionState})};signMessage=async($)=>{let{Signature:Y,toUtf8Bytes:J}=await import("ethers"),j=typeof $==="string"?J($):$,Q=await this.getLedgerSigner(),Z=await E({action:()=>Q.signMessage(this.derivationPath,j),onDeviceActionState:this.onDeviceActionState});return Y.from(Z).serialized};signTypedData=async($,Y,J,j)=>{let{buildEIP712DomainType:Q}=await import("@swapkit/toolboxes/evm"),{hexlify:Z,Signature:G,TypedDataEncoder:X}=await import("ethers"),{EIP712Domain:F,...B}=Y,z=j??X.from(B).primaryType,W=CY({primaryType:z,types:B}),V=await X.resolveNames($,W,J,async(I)=>{let L=await this.resolveName(I);if(!L)throw new z0("wallet_ledger_invalid_params",{name:I});return L}),M=V.domain.chainId==null?void 0:Number(V.domain.chainId);if(M!==void 0&&!Number.isSafeInteger(M))throw new z0("wallet_ledger_invalid_params",{chainId:V.domain.chainId});let _={domain:{...V.domain.chainId!=null&&{chainId:M},...V.domain.name!=null&&{name:V.domain.name},...V.domain.salt!=null&&{salt:Z(V.domain.salt)},...V.domain.verifyingContract!=null&&{verifyingContract:V.domain.verifyingContract},...V.domain.version!=null&&{version:V.domain.version}},message:V.value,primaryType:z,types:{EIP712Domain:Q(V.domain),...W}},w=await this.getLedgerSigner(),y=await E({action:()=>w.signTypedData(this.derivationPath,_),onDeviceActionState:this.onDeviceActionState});return G.from(y).serialized};signTransaction=async($)=>{let{copyRequest:Y,getAddress:J,getBytes:j,resolveAddress:Q,resolveProperties:Z,Transaction:G}=await import("ethers"),X=Y($);if(X.type===4||X.authorizationList?.length)throw new z0("wallet_ledger_invalid_params",{message:"Ledger Ethereum DSK does not support EIP-7702 transactions"});let F=BigInt(this.chainId);if(X.chainId!=null&&X.chainId!==F)throw new z0("wallet_ledger_invalid_params",{chainId:X.chainId,expectedChainId:F,message:"Transaction chainId does not match the Ledger client chain"});let{from:B,to:z}=await Z({from:X.from?Q(X.from,this):void 0,to:X.to?Q(X.to,this):void 0}),W=B||X.nonce==null?await this.getAddress():void 0;if(B&&W&&J(B)!==J(W))throw new z0("wallet_ledger_invalid_params",{message:"Transaction from address does not match the Ledger account"});if(z)X.to=z;if(delete X.from,delete X.authorizationList,X.chainId=F,X.type==null&&X.gasPrice!=null&&X.accessList==null&&X.maxFeePerGas==null&&X.maxPriorityFeePerGas==null)X.type=0;X.nonce??=await this.provider?.getTransactionCount(W??await this.getAddress());let M=G.from(X),N=j(M.unsignedSerialized),_=await this.getLedgerSigner(),w=await E({action:()=>_.signTransaction(this.derivationPath,N),onDeviceActionState:this.onDeviceActionState});return M.signature=w,M.serialized}}function C$($){return new g({...$,chainId:m.Arbitrum})}function v$($){return new g({...$,chainId:m.Arc})}function P$($){return new g({...$,chainId:m.Aurora})}function S$($){return new g({...$,chainId:m.Avalanche})}function x$($){return new g({...$,chainId:m.Base})}function m$($){return new g({...$,chainId:m.Ethereum})}function l$($){return new g({...$,chainId:m.Gnosis})}function g$($){return new g({...$,chainId:m.Optimism})}function h$($){return new g({...$,chainId:m.Polygon})}function u$($){return new g({...$,chainId:m.Robinhood})}function c$($){return new g({...$,chainId:m.BinanceSmartChain})}function d$($){return new g({...$,chainId:m.Monad})}function p$($){return new g({...$,chainId:m.XLayer})}function o$($){return new g({...$,chainId:m.Berachain})}import{Chain as PY,NetworkDerivationPath as SY,SwapKitError as K0}from"@swapkit/helpers";async function s$($,Y){let{derivationPath:J,...j}=l({paramsOrPath:$,transport:Y}),Q=(J||SY[PY.Near]).join("'/").concat("'");async function Z({operation:B,requiredUserInteraction:z}){let W=(await import("@ledgerhq/hw-app-near")).default;return x({appName:"NEAR",connection:j,createApp:(V)=>new W(V),operation:B,requiredUserInteraction:z})}let{address:G,publicKey:X}=await Z({operation:(B)=>B.getAddress(Q)});return{getAddress(){return Promise.resolve(G)},async getPublicKey(){let{PublicKey:B}=await import("@near-js/crypto"),z=X.startsWith("ed25519:")?X:`ed25519:${X}`;return B.fromString(z)},signDelegateAction(B){return Promise.reject(new K0("wallet_ledger_method_not_supported",{method:"signDelegateAction",wallet:"Ledger"}))},signNep413Message(B,z,W,V,M){return Promise.reject(new K0("wallet_ledger_method_not_supported",{method:"signNep413Message",wallet:"Ledger"}))},async signTransaction(B){let{Signature:z,SignedTransaction:W}=await import("@near-js/transactions");try{let V=await Z({operation:(_)=>_.signTransaction(B.encode(),Q),requiredUserInteraction:T.SignTransaction});if(!V)throw new K0("wallet_ledger_signing_error",{reason:"Ledger returned no NEAR signature"});let M=new z({data:V,keyType:0}),N=new W({signature:M,transaction:B});return[V,N]}catch(V){if(V instanceof K0)throw V;throw new K0("wallet_ledger_signing_error",{error:V})}}}}import{Chain as s0,derivationPathToString as xY,NetworkDerivationPath as mY,SwapKitError as i$}from"@swapkit/helpers";function lY($){let[Y,J,j,Q,Z]=$;if(Y!==44||J!==148||j===void 0||Q||Z)throw new i$("wallet_ledger_derivation_path_error",{chain:s0.Stellar,derivationPath:$,reason:"Stellar only uses m/44'/148'/x'"});return xY([Y,J,j]).replace(/^m\//,"")}async function n$($,Y){let{derivationPath:J,...j}=l({paramsOrPath:$,transport:Y}),Q=lY(J||mY[s0.Stellar]);async function Z({operation:z,requiredUserInteraction:W}){let V=(await import("@ledgerhq/hw-app-str")).default;return x({appName:"Stellar",connection:j,createApp:(M)=>new V(M),operation:z,requiredUserInteraction:W})}let[{rawPublicKey:G},{StrKey:X}]=await Promise.all([Z({operation:(z)=>z.getPublicKey(Q)}),import("@stellar/stellar-sdk")]),F=X.encodeEd25519PublicKey(G);async function B(z){let{signature:W}=await Z({operation:(V)=>V.signTransaction(Q,z.signatureBase()),requiredUserInteraction:T.SignTransaction});try{z.addSignature(F,W.toString("base64"))}catch(V){throw new i$("wallet_ledger_invalid_signature",{chain:s0.Stellar,error:V})}return z}return{getAddress:()=>F,publicKey:G,signTransaction:B}}import{Chain as gY,derivationPathToString as hY,NetworkDerivationPath as uY,SwapKitError as B0}from"@swapkit/helpers";class r${derivationPath;address=null;publicKey=null;connection;constructor($,Y){let{derivationPath:J,...j}=l({paramsOrPath:$,transport:Y});this.derivationPath=typeof J==="string"?J:hY(J||uY[gY.Sui]),this.connection=j}getLedgerPath(){return this.derivationPath.replace(/^m\//,"").replace(/\/(\d+)\/(\d+)$/,"/$1'/$2'")}async runSuiOperation({operation:$,requiredUserInteraction:Y}){let J=(await import("@ledgerhq/hw-app-sui")).default;return x({appName:"Sui",connection:this.connection,createApp:(j)=>new J(j),operation:$,requiredUserInteraction:Y})}async connect(){let $=this.getLedgerPath(),Y=await this.runSuiOperation({operation:(J)=>J.getPublicKey($)});if(!Y?.publicKey)throw new B0("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 B0("wallet_ledger_failed_to_get_address");return this.address}async getAddress(){if(this.address)return this.address;return await this.connect()}async signTransaction($){let Y=$ instanceof Uint8Array?$:$.transaction;if(!this.publicKey)throw new B0("wallet_ledger_failed_to_get_address");try{let J=this.getLedgerPath(),j=new Uint8Array(3+Y.length);j.set(Y,3);let Q=await this.runSuiOperation({operation:(X)=>X.signTransaction(J,j),requiredUserInteraction:T.SignTransaction});if(!Q?.signature)throw new B0("wallet_ledger_signing_error");let Z=this.publicKey.length===33?this.publicKey.slice(1):this.publicKey;if(Z.length!==32)throw new B0("wallet_ledger_signing_error",{error:"Invalid public key length"});let G=new Uint8Array(97);return G.set(Q.signature,1),G.set(Z,65),{bytes:Buffer.from(Y).toString("base64"),signature:Buffer.from(G).toString("base64")}}catch(J){if(J instanceof B0)throw J;throw new B0("wallet_ledger_signing_error",{error:J})}}}function a$($,Y){return new r$($,Y)}import{base64 as I0,hex as iY}from"@scure/base";import{NetworkDerivationPath as nY,SwapKitError as E0}from"@swapkit/helpers";import{SwapKitError as j0}from"@swapkit/helpers";var $9=85,cY=4,dY=0,i0=2,pY=0,oY=1,t$=2,n0=36864,e$=250;class R0{name="THORChainCommand";params;constructor($){this.params=$}getApdu(){let{data:$=new Uint8Array,ins:Y,p1:J=0,p2:j=0}=this.params;return{cla:$9,data:$,ins:Y,p1:J,p2:j}}parseResponse($){let Y=($.statusCode[0]??0)*256+($.statusCode[1]??0);if(Y!==n0)throw Error(`THORChain app returned status 0x${Y.toString(16).padStart(4,"0")}`);return $.data}}function Y9({path:$}){if($.length!==5)throw new j0("wallet_ledger_invalid_params",{reason:"THORChain path must contain five elements"});let Y=new Uint8Array(20),J=new DataView(Y.buffer);return $.forEach((j,Q)=>{if(typeof j!=="number"||!Number.isInteger(j)||j<0||j>4294967295)throw new j0("wallet_ledger_invalid_params",{reason:`Invalid THORChain path segment ${Q}`});if(Q>=3&&j>=2147483648)throw new j0("wallet_ledger_invalid_params",{reason:`THORChain path segment ${Q} must not be hardened`});let Z=j&2147483647,G=Q<3?(Z|2147483648)>>>0:Z;J.setUint32(Q*4,G,!0)}),Y}function sY({hrp:$,path:Y}){let J=new TextEncoder().encode($);if(J.length<1||J.length>83)throw new j0("wallet_ledger_invalid_params",{reason:"Invalid THORChain address prefix"});let j=Y9({path:Y});return Uint8Array.from([J.length,...J,...j])}function J9({checkOnDevice:$,hrp:Y,path:J}){return new R0({data:sY({hrp:Y,path:J}),ins:cY,p1:$?1:0})}function j9({message:$,path:Y}){let J=[new R0({data:Y9({path:Y}),ins:i0,p1:pY})];if($.length===0)return J.push(new R0({data:new Uint8Array,ins:i0,p1:t$})),J;for(let j=0;j<$.length;j+=e$){let Q=Math.min(j+e$,$.length);J.push(new R0({data:$.slice(j,Q),ins:i0,p1:Q===$.length?t$:oY}))}return J}function Q9({response:$}){if($.length<2)throw new j0("wallet_ledger_invalid_response",{reason:"THORChain response is missing status bytes"});return $.slice(0,-2)}async function Z9({transport:$}){let Y=await $.send($9,dY,0,0,Buffer.alloc(0),[n0]),J=Q9({response:Y});if(J.length<4)throw new j0("wallet_ledger_invalid_response",{reason:"Invalid THORChain version response"});return`${J[1]}.${J[2]}.${J[3]}`}async function X9({command:$,transport:Y}){let J=$.getApdu(),j=await Y.send(J.cla,J.ins,J.p1,J.p2,Buffer.from(J.data),[n0]);return Q9({response:j})}function G9({response:$}){if($.length<34)throw new j0("wallet_ledger_invalid_response",{reason:"Invalid THORChain address response"});let Y=$.slice(0,33),J=new TextDecoder().decode($.slice(33));if(!J)throw new j0("wallet_ledger_invalid_response",{reason:"THORChain address is empty"});return{address:J,publicKey:Y}}function r0({version:$}){return`THORChain Ledger app major 2 is required, received ${$||"unknown"}`}var rY="THORChain";function aY($){if(typeof $==="string")return $;let Y=$.chain?.toUpperCase(),J=($.symbol||$.ticker||"").toUpperCase();if(!(Y&&J))return J||Y||"";return`${Y}${$.synth?"/":"."}${J}`}function tY($){return{...$,msgs:$.msgs.map((Y)=>{if(!Y.type.includes("MsgDeposit"))return Y;let J=Y.value.coins;if(!Array.isArray(J))return Y;return{...Y,value:{...Y.value,coins:J.map((j)=>({...j,asset:aY(j.asset)}))}}})}}async function eY({signature:$}){let{Secp256k1Signature:Y}=await import("@cosmjs/crypto");try{return y0(Y.fromDer($).toFixedLength())}catch(J){throw new E0("wallet_ledger_invalid_signature",J)}}async function $1({commands:$,transport:Y}){let J=await Z9({transport:Y});if(!J.startsWith("2.")){let{InvalidResponseFormatError:Q}=await import("../chunk-nb08g045.js");throw new Q(r0({version:J}))}let j=new Uint8Array;for(let Q of $)j=await X9({command:Q,transport:Y});return j}class a0{derivationPath;dmkSession;onDeviceActionState;pubKey;transport;constructor({derivationPath:$=nY.THOR,dmkSession:Y,onDeviceActionState:J,transport:j}={}){if(Y&&j)throw new E0("wallet_ledger_invalid_params",{message:"Provide either a Ledger DMK session or a LedgerJS transport, not both"});this.derivationPath=$,this.dmkSession=Y,this.onDeviceActionState=J,this.transport=j}get pubkey(){return this.pubKey?I0.encode(this.pubKey):null}executeCommands=async({commands:$,requiredUserInteraction:Y})=>{if(this.transport)try{return await $1({commands:$,transport:this.transport})}catch(N){throw p(N,{userRefusedStatusWords:$0})}let J=this.dmkSession??await r(),{Apdu:j,CallTaskInAppDeviceAction:Q,CommandResultFactory:Z,DmkResultFactory:G,InvalidResponseFormatError:X,InvalidStatusWordError:F,isSuccessCommandResult:B,UnknownDeviceExchangeError:z}=await import("../chunk-nb08g045.js"),W=(N)=>{let _=N.getApdu();return{getApdu:()=>new j(_.cla,_.ins,_.p1,_.p2,_.data),name:N.name,parseResponse:(w)=>{try{return Z({data:N.parseResponse(w)})}catch(y){let I=iY.encode(w.statusCode);return Z({error:Object.assign(new F(y instanceof Error?y.message:String(y)),{errorCode:I})})}}}},V=new Q({input:{appName:rY,requiredUserInteraction:Y,skipOpenApp:!1,task:async(N)=>{try{let _=N.getDeviceSessionState(),w="currentApp"in _?_.currentApp.version:void 0;if(!w?.startsWith("2."))return G({error:new X(r0({version:w}))});let y=new Uint8Array;for(let I of $){let L=await N.sendCommand(W(I));if(!B(L))return G({error:L.error});y=L.data}return G({data:{response:y}})}catch(_){return G({error:new z(_)})}}}});return(await E({action:()=>J.dmk.executeDeviceAction({deviceAction:V,sessionId:J.sessionId}),onDeviceActionState:this.onDeviceActionState,userRefusedStatusWords:$0})).response};getAddressData=async({checkOnDevice:$})=>{let Y=await this.executeCommands({commands:[J9({checkOnDevice:$,hrp:"thor",path:this.derivationPath})],requiredUserInteraction:$?T.VerifyAddress:T.None});return G9({response:Y})};signBytes=async({message:$})=>{let Y=await this.executeCommands({commands:j9({message:$,path:this.derivationPath}),requiredUserInteraction:T.SignTransaction});return eY({signature:Y})};connect=async()=>{let{address:$,publicKey:Y}=await this.getAddressData({checkOnDevice:!1});return this.pubKey=Y,$};getAddressAndPubKey=async()=>{let{address:$,publicKey:Y}=await this.getAddressData({checkOnDevice:!1});return this.pubKey=Y,{bech32_address:$,compressed_pk:Y,error_message:"No errors",return_code:36864}};showAddressAndPubKey=async()=>{let{address:$,publicKey:Y}=await this.getAddressData({checkOnDevice:!0});return this.pubKey=Y,{bech32_address:$,compressed_pk:Y,error_message:"No errors",return_code:36864}};signTransaction=async({rawTx:$,sequence:Y="0"})=>{if(!this.pubKey)await this.connect();let J=this.pubKey;if(!J)throw new E0("wallet_ledger_pubkey_not_found");let j=await this.signBytes({message:new TextEncoder().encode($)});return[{pub_key:{type:"tendermint/PubKeySecp256k1",value:I0.encode(J)},sequence:Y,signature:I0.encode(j)}]};signAmino=async($,Y)=>{let J=(await this.getAccounts()).find(({address:G})=>G===$);if(!J)throw new E0("wallet_ledger_address_not_found",{address:$});let{encodeSecp256k1Signature:j,serializeSignDoc:Q}=await import("@cosmjs/amino"),Z=await this.signBytes({message:Q(tY(Y))});return{signature:j(J.pubkey,Z),signed:Y}};getAccounts=async()=>{let{address:$,publicKey:Y}=await this.getAddressData({checkOnDevice:!1});return this.pubKey=Y,[{address:$,algo:"secp256k1",pubkey:Y}]};sign=async($)=>I0.encode(await this.signBytes({message:new TextEncoder().encode($)}))}import{Chain as z9,getRPCUrl as Y1,NetworkDerivationPath as J1,SwapKitError as H0,WalletOption as V9}from"@swapkit/helpers";var j1=3,Q1=300,B9=0;function Z1($){let[Y,J,j,Q,Z,...G]=$;if(!(Y===44&&J===607&&j===0&&Q===0&&typeof Z==="number"&&Number.isInteger(Z)&&Z>=0&&G.length===0))throw new H0({errorKey:"wallet_ledger_derivation_path_error",info:{derivationPath:$,reason:"Ledger TON accounts derive from m/44'/607'/0'/0'/{account}'"}});return[44,607,0,0,Z,0]}function F0($,Y={}){return new H0({errorKey:"wallet_ledger_invalid_params",info:{...Y,reason:$,wallet:V9.LEDGER}})}function X1($){let Y=Array.isArray($)?$:$.messages,[J]=Y;if(!J)throw F0("A TON transaction needs one message");if(Y.length>1)throw new H0({errorKey:"wallet_ledger_method_not_supported",info:{messageCount:Y.length,method:"signTransaction",reason:"Ledger signs one TON message per transaction",wallet:V9.LEDGER}});let j=(Array.isArray($)?J.sendMode:$.sendMode??J.sendMode)??j1;if(!Array.isArray($)&&J.sendMode!==void 0&&J.sendMode!==j)throw F0("The message send mode differs from the transaction send mode",{messageSendMode:J.sendMode,sendMode:j});if(!Number.isInteger(j)||j<0||j>255)throw F0("The TON send mode must be an integer between 0 and 255",{sendMode:j});return{message:J,sendMode:j}}async function G1($){let[{Address:Y,Cell:J,loadStateInit:j},{parseMessage:Q}]=await Promise.all([import("@ton/core"),import("@ton-community/ton-ledger")]);if(!/^\d+$/.test($.amount))throw F0("The TON amount must be an integer number of nanotons",{amount:$.amount});let Z=BigInt($.amount),G;try{G=Y.parse($.address)}catch{throw F0("Invalid TON destination address",{address:$.address})}let X=Y.isFriendly($.address)?Y.parseFriendly($.address).isBounceable:!0,F;if($.stateInit!==void 0)try{F=j(J.fromBase64($.stateInit).beginParse())}catch{throw F0("The TON state init is not a valid BOC",{stateInit:$.stateInit})}let B;if($.payload!==void 0)try{B=J.fromBase64($.payload)}catch{throw F0("The TON payload is not a valid BOC",{payload:$.payload})}let z=B?Q(B,{disallowModification:!0}):void 0;return{amount:Z,bounce:X,payload:B,payloadFormat:z,stateInit:F,to:G}}function F9($,Y){return $&&Y?$.hash().equals(Y.hash()):$==null&&Y==null}function z1($,Y){if(!($&&Y))return $==null&&Y==null;return F9($.code,Y.code)&&F9($.data,Y.data)}async function B1($,Y){let{Cell:J,loadMessageRelaxed:j}=await import("@ton/core"),Q;try{let X=$.beginParse().skip(512),F=X.loadUint(32),B=X.loadUint(32),z=X.loadUint(32);X.skip(8);let W=X.loadUint(8),V=j(X.loadRef().beginParse());X.endParse(),Q={order:V,sendMode:W,seqno:z,timeout:B,walletId:F}}catch(X){throw new H0({errorKey:"wallet_ledger_signing_error",info:{reason:"Unreadable signed TON transfer"}},X)}let{order:Z}=Q;if(!(Q.walletId===Y.walletId&&Q.timeout===Y.timeout&&Q.seqno===Y.seqno&&Q.sendMode===Y.sendMode&&Z.info.type==="internal"&&Z.info.dest.equals(Y.to)&&Z.info.value.coins===Y.amount&&Z.info.bounce===Y.bounce&&Z.body.hash().equals((Y.payload??J.EMPTY).hash())&&z1(Z.init,Y.stateInit)))throw new H0({errorKey:"wallet_ledger_signing_error",info:{reason:"The signed TON transfer does not match the requested message"}})}async function q9($,Y){let{derivationPath:J,...j}=l({paramsOrPath:$,transport:Y}),Q=Z1(J||J1[z9.Ton]);async function Z({operation:_,requiredUserInteraction:w}){let{TonTransport:y}=await import("@ton-community/ton-ledger");return x({appName:"TON",connection:j,createApp:(I)=>new y(I),operation:_,requiredUserInteraction:w})}let[{Address:G},{WalletContractV4:X}]=await Promise.all([import("@ton/core"),import("@ton/ton")]),{address:F,publicKey:B}=await Z({operation:(_)=>_.getAddress(Q,{bounceable:!1,chain:B9,testOnly:!1,walletVersion:"v4"})}),z=X.create({publicKey:B,workchain:B9});if(!z.address.equals(G.parse(F)))throw new H0({errorKey:"wallet_ledger_failed_to_get_address",info:{deviceAddress:F,reason:"The Ledger TON address is not the wallet v4 address of its public key"}});let W=z.address.toString({bounceable:!1,urlSafe:!0}),V;async function M(){if(!V){let{TonClient:I}=await import("@ton/ton");V=new I({endpoint:await Y1(z9.Ton)})}let{state:_}=await V.getContractState(z.address),w=_==="active",y=w?await V.open(z).getSeqno():0;return{deployed:w,seqno:y}}async function N(_){let{message:w,sendMode:y}=X1(_),I=await G1(w),{deployed:L,seqno:K}=await M(),b=Math.floor(Date.now()/1000)+Q1,C=await Z({operation:(f)=>f.signTransaction(Q,{amount:I.amount,bounce:I.bounce,payload:I.payloadFormat,sendMode:y,seqno:K,stateInit:I.stateInit,timeout:b,to:I.to}),requiredUserInteraction:T.SignTransaction});await B1(C,{...I,sendMode:y,seqno:K,timeout:b,walletId:z.walletId});let{beginCell:R,external:O,storeMessage:k}=await import("@ton/core");return R().store(k(O({body:C,init:L?void 0:z.init,to:z.address}))).endCell()}return{getAddress:()=>W,publicKey:B,signTransaction:N}}import{derivationPathToString as F1,NetworkDerivationPath as V1,SwapKitError as w0}from"@swapkit/helpers";class W9{derivationPath;ledgerTimeout=50000;connection;constructor($,Y){let{derivationPath:J,...j}=l({paramsOrPath:$,transport:Y});this.derivationPath=typeof J==="string"?J:F1(J||V1.TRON),this.connection=j}async runTronOperation({operation:$,requiredUserInteraction:Y}){let J=(await import("@ledgerhq/hw-app-trx")).default;return x({appName:"Tron",connection:this.connection,createApp:(j)=>new J(j),operation:$,requiredUserInteraction:Y})}checkOrCreateTransportAndLedger=async()=>{await this.runTronOperation({operation:async()=>!0})};createTransportAndLedger=async()=>{await this.runTronOperation({operation:async()=>!0})};getAddress=async()=>{let $=await this.getAddressAndPubKey();if(!$)throw new w0("wallet_ledger_failed_to_get_address");return $.address};getAddressAndPubKey=async()=>{let $=await this.runTronOperation({operation:(Y)=>Y.getAddress(this.derivationPath)});if(!$)throw new w0("wallet_ledger_failed_to_get_address");return{address:$.address,publicKey:$.publicKey}};showAddressAndPubKey=async()=>{return await this.runTronOperation({operation:($)=>$.getAddress(this.derivationPath,!0),requiredUserInteraction:T.VerifyAddress})};signTransaction=async($)=>{try{let Y=await this.runTronOperation({operation:(J)=>J.signTransaction(this.derivationPath,$.raw_data_hex,[]),requiredUserInteraction:T.SignTransaction});if(!Y)throw new w0("wallet_ledger_signing_error");return{...$,signature:[Y]}}catch(Y){if(Y instanceof w0)throw Y;throw new w0("wallet_ledger_signing_error",{error:Y})}}}function H9($,Y){return new W9($,Y)}import{Chain as q1,derivationPathToString as W1,NetworkDerivationPath as H1}from"@swapkit/helpers";var M1=2147483648;function N1($){return Object.fromEntries(Object.entries($).filter(([,Y])=>Y!==null&&Y!==void 0))}async function M9($,Y){let{derivationPath:J,...j}=l({paramsOrPath:$,transport:Y}),Q=W1(J||H1[q1.Ripple]);async function Z({operation:B,requiredUserInteraction:z}){let W=(await import("@ledgerhq/hw-app-xrp")).default;return x({appName:"XRP",connection:j,createApp:(V)=>new W(V),operation:B,requiredUserInteraction:z})}let{address:G,publicKey:X}=await Z({operation:(B)=>B.getAddress(Q)});async function F(B){let[{encode:z},{hashes:W}]=await Promise.all([import("ripple-binary-codec"),import("xrpl")]),V={...N1(B),Flags:B.Flags||M1,SigningPubKey:X.toUpperCase()},M=z(V),N=await Z({operation:(y)=>y.signTransaction(Q,M),requiredUserInteraction:T.SignTransaction}),_=z({...V,TxnSignature:N});return{hash:W.hashSignedTx(_),tx_blob:_}}return{getAddress:()=>G,signTransaction:F}}import{hex as i}from"@scure/base";import{derivationPathToString as L1,NetworkDerivationPath as _1,SwapKitError as a}from"@swapkit/helpers";var K1=3364600;function N9($){return(typeof $==="string"?$:L1($)).replace(/^m\//,"").replace(/^\/+/,"")}function T0($){let Y=N9($),J=/^44'\/133'\/(\d+)'(?:\/(0|1)\/(\d+))?$/.exec(Y);if(!J)throw new a("wallet_ledger_invalid_params",{path:Y,reason:"Expected a Zcash BIP44 path with coin type 133"});let j=Number(J[1]),Q=`44'/133'/${j}'`;return{account:j,accountPath:Q,fullPath:`${Q}/${J[2]??0}/${J[3]??0}`}}function R1($){let{fullPath:Y}=T0($);return Y.split("/")[3]==="1"?Y:void 0}function w1($){let Y=new Uint8Array(4);return new DataView(Y.buffer).setUint32(0,$>>>0,!0),Y}function U1($){let Y=new Uint8Array(8);return new DataView(Y.buffer).setBigUint64(0,$,!0),Y}function M0($,Y){return new a({errorKey:"wallet_ledger_invalid_params",info:$},Y)}function O1({bytes:$,offset:Y}){if(Y+4>$.length)throw Error("Unexpected end of previous transaction");return new DataView($.buffer,$.byteOffset+Y,4).getUint32(0,!0)}function f1($){let Y=0;function J(Q){if(Y+Q>$.length)throw Error(`Previous transaction ends before byte ${Y+Q}`);return Y+=Q,$.slice(Y-Q,Y)}function j(){let Q=J(1)[0]??0;if(Q<253)return Q;let Z=new DataView(J(Q===253?2:Q===254?4:8).buffer),G=Z.byteLength===2?Z.getUint16(0,!0):Z.byteLength===4?Z.getUint32(0,!0):Number(Z.getBigUint64(0,!0));if(!Number.isSafeInteger(G))throw Error("Previous transaction compact-size value exceeds safe range");return G}return{compactSize:j,rest:()=>J($.length-Y),take:J,varBytes:()=>J(j())}}function k1({bytes:$,version:Y}){let J=f1($),j=J.take(Y===4?8:20),Q=[];for(let B=J.compactSize();Q.length<B;){let z=J.take(36),W=J.varBytes(),V=J.take(4);Q.push({prevout:z,script:W,sequence:V})}let Z=[];for(let B=J.compactSize();Z.length<B;){let z=J.take(8),W=J.varBytes();Z.push({amount:z,script:W})}let G={inputs:Q,nVersionGroupId:j.slice(4,8),outputs:Z,version:j.slice(0,4)};if(Y>=5)return{...G,consensusBranchId:j.slice(8,12),locktime:j.slice(12,16),nExpiryHeight:j.slice(16,20)};let X=J.take(4),F=J.take(4);return{...G,extraData:J.rest(),locktime:X,nExpiryHeight:F}}function L9({hash:$,txid:Y}){let J=$.toLowerCase();return J===i.encode(Y)||J===i.encode(Y.slice().reverse())}async function b1($){let{CompactSize:Y,utils:J}=await import("@swapkit/utxo-signer"),j=Array.from({length:$.outputsLength},(Q,Z)=>$.getOutput(Z));return J.concatBytes(Y.encode(BigInt(j.length)),...j.flatMap(({amount:Q,script:Z})=>[U1(Q),Y.encode(BigInt(Z.length)),Z]))}async function A1($){let{ZCASH_IRONWOOD_ACTIVATION_HEIGHT:Y,ZCASH_NU7_ACTIVATION_HEIGHT:J,ZcashConsensusBranchId:j}=await import("@swapkit/utxo-signer");switch($){case j.NU6_2:return K1;case j.IRONWOOD:return Y;case j.NU7:return J;default:throw new a("wallet_ledger_invalid_params",{consensusBranchId:$,reason:"Ledger Zcash DSK signing supports NU6.2, Ironwood and NU7 target branches"})}}async function D1({inputIndex:$,utxo:Y}){let{hash:J,index:j,txHex:Q}=Y,Z={inputIndex:$,outputIndex:j,txid:J};if(!Q)throw M0({...Z,reason:"Zcash Ledger signing requires the full previous transaction txHex for every input"});function G(M){try{return M()}catch(N){throw M0({...Z,reason:N instanceof Error?N.message:String(N)},N)}}let X=G(()=>i.decode(Q.replace(/^0x/i,""))),F=G(()=>O1({bytes:X,offset:0})),B=F&2147483647;if((F&2147483648)===0||B<4||B>6)throw M0({...Z,reason:"Ledger Zcash signing supports only overwintered v4, v5 and v6 previous transactions",version:B});let z=G(()=>k1({bytes:X,version:B}));if(j<0||j>=z.outputs.length)throw M0({...Z,outputCount:z.outputs.length,reason:"Zcash input references an output outside its previous transaction"});if(B>=5)return{...z,serializedPreviousTransactionOverride:X};let{utils:W}=await import("@swapkit/utxo-signer"),V=W.sha256x2(X);if(!L9({hash:J,txid:V}))throw M0({...Z,previousTxid:i.encode(V.reverse()),reason:"Previous transaction does not hash to the input txid"});return z}function y1({accountPath:$,derivationPaths:Y,inputUtxos:J,tx:j}){if(J.length!==j.inputsLength||Y.length!==j.inputsLength)throw new a("wallet_ledger_invalid_params",{derivationPathCount:Y.length,inputCount:j.inputsLength,inputUtxoCount:J.length,reason:"Zcash input UTXOs and derivation paths must match the transaction input count"});return J.forEach((Q,Z)=>{let G=j.getInput(Z);if(!L9({hash:Q.hash,txid:G.txid})||Q.index!==G.index)throw M0({inputIndex:Z,reason:"Zcash input UTXO does not match the transaction input",transactionInput:{index:G.index,txid:i.encode(G.txid)},utxo:{hash:Q.hash,index:Q.index}})}),Y.map((Q)=>{let Z=T0(Q);if(Z.accountPath!==$)throw new a("wallet_ledger_invalid_params",{accountPath:$,path:Z.fullPath,reason:"All Zcash input derivation paths must belong to the configured account"});return Z.fullPath})}function I1($){let Y=$.replace(/^0x/i,""),J=i.decode(Y);if(J.length<4||(new DataView(J.buffer,J.byteOffset,4).getUint32(0,!0)&2147483647)!==5)throw new a("wallet_ledger_invalid_response",{reason:"Ledger Zcash signer did not return a version 5 transaction"});return Y}function _9({derivationPath:$=_1.ZEC,dmkSession:Y,onDeviceActionState:J,transport:j}={}){let Q=T0($),Z=j?K$($,j):void 0,G=Y0({build:async(W)=>{let{SignerZcashBuilder:V}=await import("../chunk-a39rm9nv.js");return new V(W).build()},dmkSession:Y});function X(){if(Z)throw new a("wallet_ledger_invalid_params",{reason:"A Device Signer Kit operation is unavailable when a legacy transport is supplied"});return G()}async function F({checkOnDevice:W=!1,path:V=Q.fullPath}={}){let M=await X();return E({action:()=>M.getAddress(V,{checkOnDevice:W}),onDeviceActionState:J})}async function B({path:W=Q.accountPath,xpubVersion:V=76067358}={}){let M=T0(W);if(M.fullPath!==`${M.accountPath}/0/0`||N9(W).split("/").length!==3)throw new a("wallet_ledger_invalid_params",{path:W,reason:"Zcash extended public keys are exported at account level"});let N={dmkSession:j?void 0:Y??await r(),onDeviceActionState:J,transport:j},{default:_}=await import("@ledgerhq/hw-app-btc");return x({appName:"Zcash",connection:N,createApp:(w)=>new _({currency:"zcash",transport:w}),operation:(w)=>w.getWalletXpub({path:M.accountPath,xpubVersion:V})})}async function z({changePath:W,derivationPaths:V,inputUtxos:M,tx:N}){let _=y1({accountPath:Q.accountPath,derivationPaths:V??Array.from({length:N.inputsLength},()=>Q.fullPath),inputUtxos:M,tx:N});if(Z)throw new a("wallet_ledger_invalid_params",{reason:"Zcash signing requires a Ledger DMK session instead of a legacy transport"});let w=await A1(N.consensusBranchId),y=await Promise.all(M.map(async(b,C)=>[await D1({inputIndex:C,utxo:b}),b.index,null,N.getInput(C).sequence??4294967295,w])),I={additionals:["zcash","sapling"],associatedKeysets:_,blockHeight:w,changePath:R1(W??Q.fullPath),expiryHeight:w1(N.expiryHeight),inputs:y,lockTime:N.lockTime,outputScriptHex:i.encode(await b1(N))},L=await X(),K=await E({action:()=>L.signTransaction(I),onDeviceActionState:J});return I1(K)}return{connect:async()=>{if(Z)return Z.connect();await X()},disconnect:async()=>Z?.disconnect(),getAddress:async()=>{if(Z)return Z.getAddress();return(await F()).address},getAddressAndPubKey:async()=>{if(Z)return{address:await Z.getAddress()};let{address:W,chainCode:V,publicKey:M}=await F();return{address:W,chainCode:i.encode(V),publicKey:i.encode(M)}},getExtendedPublicKey:B,showAddressAndPubKey:async()=>{if(Z)return{address:await Z.getAddress()};let{address:W,chainCode:V,publicKey:M}=await F({checkOnDevice:!0});return{address:W,chainCode:i.encode(V),publicKey:i.encode(M)}},signTransaction:z,signTransactionWithMultiplePaths:async(W)=>z(W)}}async function u({chain:$,dmkSession:Y,derivationPath:J,onDeviceActionState:j,originToken:Q,transport:Z}){let G=E1.includes($);if(Y&&Z)throw new t0("wallet_ledger_invalid_params",{message:"Provide either a Ledger DMK session or a LedgerJS transport, not both"});if(G&&Z)throw new t0("wallet_ledger_invalid_params",{message:"Ledger EVM clients require a DMK session instead of a LedgerJS transport"});let X={derivationPath:J??T1[$],dmkSession:Y,onDeviceActionState:j,transport:Z},{match:F}=await import("ts-pattern");return F($).returnType().with(U.THORChain,()=>Promise.resolve(new a0(X))).with(U.Cosmos,()=>Promise.resolve(new o0(X))).with(U.Bitcoin,()=>Promise.resolve(D$(X))).with(U.BitcoinCash,()=>Promise.resolve(N$(X))).with(U.Dash,()=>Promise.resolve(_$(X))).with(U.Dogecoin,()=>Promise.resolve(L$(X))).with(U.Litecoin,()=>Promise.resolve(M$(X))).with(U.Zcash,()=>Promise.resolve(_9(X))).with(U.Ripple,()=>Promise.resolve(M9(X))).with(U.Stellar,()=>Promise.resolve(n$(X))).with(U.Cardano,()=>Promise.resolve(I$(X))).with(U.Tron,()=>Promise.resolve(H9(X))).with(U.Sui,()=>Promise.resolve(a$(X))).with(U.Ton,()=>Promise.resolve(q9(X))).with(U.Near,()=>Promise.resolve(s$(X))).with(U.Arbitrum,U.Arc,U.Aurora,U.Avalanche,U.Berachain,U.BinanceSmartChain,U.Ethereum,U.Gnosis,U.Monad,U.Optimism,U.Polygon,U.Base,U.Robinhood,U.XLayer,async()=>{let{getProvider:B}=await import("@swapkit/toolboxes/evm"),z={derivationPath:J,dmkSession:Y,onDeviceActionState:j,originToken:Q,provider:await B($)};return F($).with(U.BinanceSmartChain,()=>c$(z)).with(U.Avalanche,()=>S$(z)).with(U.Arbitrum,()=>C$(z)).with(U.Arc,()=>v$(z)).with(U.Berachain,()=>o$(z)).with(U.Optimism,()=>g$(z)).with(U.Polygon,()=>h$(z)).with(U.Base,()=>x$(z)).with(U.Aurora,()=>P$(z)).with(U.Gnosis,()=>l$(z)).with(U.Monad,()=>d$(z)).with(U.Robinhood,()=>u$(z)).with(U.XLayer,()=>p$(z)).otherwise(()=>m$(z))}).otherwise(()=>{throw new t0("wallet_chain_not_supported",{chain:$,wallet:C1.LEDGER})})}var A9=[q.Arbitrum,q.Arc,q.Aurora,q.Avalanche,q.Base,q.Berachain,q.BinanceSmartChain,q.Bitcoin,q.BitcoinCash,q.Cardano,q.Cosmos,q.Dash,q.Dogecoin,q.Ethereum,q.Gnosis,q.Litecoin,q.Monad,q.Near,q.Optimism,q.Polygon,q.Ripple,q.Robinhood,q.Stellar,q.Sui,q.THORChain,q.Ton,q.XLayer,q.Tron,q.Zcash],d1=[q.BitcoinCash,q.Bitcoin,q.Dash,q.Dogecoin,q.Litecoin,q.Zcash],D9=[q.Ethereum,q.Avalanche,q.Arbitrum,q.Arc,q.Berachain,q.Optimism,q.Polygon,q.BinanceSmartChain,q.Base,q.Aurora,q.Gnosis,q.Monad,q.Robinhood,q.XLayer];function p1($){return A9.includes($)}var o1=u1({connect:({addChain:$,supportedChains:Y,walletType:J})=>async function(Q,Z,{address:G,dmkSession:X,onDeviceActionState:F,originToken:B,transport:z}={}){let[W]=P1({chains:Q,supportedChains:Y,walletType:J});if(!W)return!1;let V=Z??x1[W],M=await X4({address:G,chain:W,derivationPath:V,dmkSession:X,onDeviceActionState:F,originToken:B,transport:z});return $({...M,chain:W,walletType:N0.LEDGER}),!0},getExtendedPublicKey:i1,name:"connectLedger",signingSupport:{...Object.fromEntries(D9.map(($)=>[$,{direct:!0,typedData:!0}])),[q.Bitcoin]:{direct:!0},[q.BitcoinCash]:{direct:!0},[q.Cardano]:{direct:!0},[q.Cosmos]:{direct:!0},[q.Dash]:{direct:!0},[q.Dogecoin]:{direct:!0},[q.Litecoin]:{direct:!0},[q.Near]:{direct:!0},[q.Ripple]:{direct:!0},[q.Stellar]:{direct:!0},[q.Sui]:{direct:!0},[q.THORChain]:{direct:!0},[q.Ton]:{direct:!0},[q.Tron]:{direct:!0}},supportedChains:[...A9],walletType:N0.LEDGER}),z8=c1(o1);function y9({chain:$,path:Y,signer:J,xpubVersion:j}){let Q=U0($).with(q.Bitcoin,q.Litecoin,()=>Y).with(q.BitcoinCash,q.Dash,q.Dogecoin,q.Zcash,()=>Y.replace(/^m\//,"")).exhaustive();return U0($).with(q.Bitcoin,()=>J.getExtendedPublicKey({path:Q})).with(q.Zcash,()=>J.getExtendedPublicKey({path:Q,xpubVersion:j})).with(q.BitcoinCash,q.Dash,q.Dogecoin,q.Litecoin,()=>J.getExtendedPublicKey(Q,j)).exhaustive()}function s1($){let Y=b9(q.Zcash),J=D0((j)=>Y.getRawTx(j));return Promise.all(Array.from({length:$.inputsLength},async(j,Q)=>{let Z=$.getInput(Q),G=K9.encode(Z.txid),X=K9.encode(Z.txid.slice().reverse()),F=await J(G),[B,z]=F?[G,F]:[X,await J(X)];if(!z)throw new t("wallet_ledger_invalid_params",{inputIndex:Q,outputIndex:Z.index,reason:"Unable to resolve previous transaction hex for Ledger signing in either txid byte order",reversedTxid:X,txid:G});return{hash:B,index:Z.index,txHex:z,value:Number(Z.value)}}))}async function i1($,Y,{accountIndex:J,dmkSession:j,onDeviceActionState:Q,transport:Z}={}){if(![q.BitcoinCash,q.Bitcoin,q.Dash,q.Dogecoin,q.Litecoin,q.Zcash].includes($))throw new t("wallet_chain_not_supported",{chain:$,wallet:N0.LEDGER});let G=$,X=await u({chain:G,derivationPath:Y,dmkSession:j,onDeviceActionState:Q,transport:Z});if(!X.getExtendedPublicKey)return;let F=k9({accountIndex:J,chain:G,derivationPath:Y}),B=v0(F),z=f9(G).bip32.public;try{let W=await y9({chain:G,path:B,signer:X,xpubVersion:z});return{accountIndex:e0(F),path:B,xpub:W}}finally{await X.disconnect?.()}}async function n1({address:$,chain:Y,dmkSession:J,derivationPath:j,onDeviceActionState:Q,transport:Z}){let{getUtxoToolbox:G}=await import("@swapkit/toolboxes/utxo"),X=Y,F=await u({chain:Y,derivationPath:j,dmkSession:J,onDeviceActionState:Q,transport:Z}),B=$??await o({chain:Y,ledgerClient:F}),z=(Y===q.Bitcoin?S1(j):void 0)??h1(B,X),{publicKey:W,signLedgerTransaction:V,toolboxSigner:M}=await U0(Y).with(q.Bitcoin,async()=>{let R=F,k=z===C0.P2SH_P2WPKH||z===C0.P2TR?await R.getPublicKey():void 0;return{publicKey:k,signLedgerTransaction:({inputUtxos:f,transaction:A})=>R.signTransactionHex({inputUtxos:f,tx:A}),toolboxSigner:{getAddress:R.getAddress,publicKey:k,signTransaction:R.signTransaction}}}).with(q.BitcoinCash,q.Dogecoin,q.Dash,q.Litecoin,async()=>{let{createLegacyPsbtSigner:R,signLegacyPsbtTransaction:O}=await import("../chunk-npe2r2ge.js"),k=F;return{publicKey:void 0,signLedgerTransaction:({inputUtxos:f,transaction:A})=>O({chain:X,inputUtxos:f,legacyClient:k,tx:A}),toolboxSigner:R({address:B,chain:X,legacyClient:k})}}).with(q.Zcash,()=>{let R=F;return{publicKey:void 0,signLedgerTransaction:async({inputUtxos:O,transaction:k})=>{if(!("consensusBranchId"in k))throw new t("wallet_ledger_method_not_supported",{method:"signPCZT",wallet:N0.LEDGER});let f=O??await s1(k);return R.signTransaction({inputUtxos:f,tx:k})},toolboxSigner:void 0}}).exhaustive(),N=M?await G(X,{scriptType:z,signer:M}):G(X,{scriptType:z}),_=async(R)=>N.broadcastTx(await V({transaction:R})),w=async(R)=>{let O=R.feeRate||(await N.getFeeRates())[R.feeOptionKey||R9.Fast],{tx:k,inputs:f}=await N.createTransaction({...R,feeRate:O,fetchTxHex:!0,publicKey:R.publicKey??W,sender:B}),A=await V({inputUtxos:f,transaction:k});return await N.broadcastTx(A)};async function y({accountIndex:R}={}){if(!F.getExtendedPublicKey)return;let O=k9({accountIndex:R,chain:X,derivationPath:j}),k=v0(O),f=f9(X).bip32.public,A=await y9({chain:Y,path:k,signer:F,xpubVersion:f});return{accountIndex:e0(O),path:k,xpub:A}}function I(R={}){return y(R)}async function L({accountIndex:R,index:O,change:k=!1}){try{let f=U9({accountIndex:R,chain:X,change:k,derivationPath:j,index:O}),A=await u({chain:X,derivationPath:f,dmkSession:J,onDeviceActionState:Q,transport:Z}),P=await o({chain:X,ledgerClient:A});return{accountIndex:e0(f),address:P,change:k,index:O,path:v0(f),pubkey:""}}catch{return}}async function K({accountIndex:R,count:O,startIndex:k=0,change:f=!1}){return w9("count",O),w9("startIndex",k),(await Promise.all(Array.from({length:O},(P,v)=>L({accountIndex:R,change:f,index:k+v})))).filter((P)=>!!P)}let b=g1({chain:X,deriveAddress:L,getBalance:N.getBalance,getUtxos:(R)=>b9(X).getUtxos({address:R,fetchTxHex:!0})});async function C({utxos:R,recipient:O,assetValue:k,memo:f,feeRate:A,feeOptionKey:P,changeAddress:v}){if(Y===q.Zcash)throw new t("wallet_ledger_method_not_supported",{method:"transferFromMultipleAddresses",wallet:N0.LEDGER});if(!R.length)throw new t("wallet_ledger_invalid_params",{message:"No UTXOs provided for multi-address transfer"});let S=A||(await N.getFeeRates())[P||R9.Fast],c=f?l1(f):null,Q0=[{address:O,value:k.getBaseValue("number")}];if(c)Q0.push({script:c,value:0});let e=R.map(({hash:f0,index:k0,value:S0,txHex:b0,witnessUtxo:T9})=>({hash:f0,index:k0,txHex:b0,value:S0,witnessUtxo:T9})),{inputs:n,outputs:L0}=N.accumulative({chain:X,feeRate:S,inputs:e,outputs:Q0});if(!(n&&L0))throw new t("wallet_ledger_connection_error",{message:"Insufficient balance for multi-address transfer"});let{Transaction:O0}=await import("@swapkit/utxo-signer"),P0=new O0({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!c,version:1}),I9=v||R[0]?.address||O;m1({chain:X,compiledMemo:c,inputs:n,outputs:L0,sender:I9,tx:P0});let $$=n.map((f0)=>{let k0=R.find((b0)=>b0.hash===f0.hash&&b0.index===f0.index),S0=U9({chain:X,change:k0?.isChange??!1,derivationPath:j,index:k0?.derivationIndex??0});return v0(S0)});if(!F.signTransactionWithMultiplePaths)throw new t("wallet_ledger_method_not_supported",{method:"signTransactionWithMultiplePaths"});let E9=await U0(Y).with(q.Bitcoin,()=>F.signTransactionWithMultiplePaths({derivationPaths:$$,inputUtxos:n,tx:P0})).with(q.BitcoinCash,q.Dash,q.Dogecoin,q.Litecoin,()=>F.signTransactionWithMultiplePaths(P0,n,$$)).exhaustive();return N.broadcastTx(E9)}return{...N,...b,address:B,deriveAddressAtIndex:L,deriveAddresses:K,getExtendedPublicKey:I,getExtendedPublicKeyInfo:y,signAndBroadcastTransaction:_,transfer:w,transferFromMultipleAddresses:C}}async function r1({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,originToken:Q,transport:Z}){let G=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,originToken:Q,transport:Z}),{getEvmToolboxAsync:X}=await import("@swapkit/toolboxes/evm"),F=await o({chain:$,ledgerClient:G});return{...await X($,{signer:G}),address:F}}async function a1({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}){let Z=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}),{getCosmosToolbox:G}=await import("@swapkit/toolboxes/cosmos"),X=G($,{signer:Z}),F=await o({chain:$,ledgerClient:Z});return{...X,address:F}}async function t1({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}){let Z=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}),{getCosmosToolbox:G}=await import("@swapkit/toolboxes/cosmos"),X=G($,{signer:Z}),F=await o({chain:$,ledgerClient:Z}),{sign:B}=Z;return{...X,address:F,signMessage:B}}async function e1({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}){let{getNearToolbox:Z}=await import("@swapkit/toolboxes/near"),G=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}),X=await G.getAddress();return{...Z({signer:G}),address:X}}async function $4({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}){let{getCardanoToolbox:Z}=await import("@swapkit/toolboxes/cardano"),G=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}),X=G.getAddress();return{...Z({signer:G}),address:X}}async function Y4({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}){let{getRippleToolbox:Z}=await import("@swapkit/toolboxes/ripple"),G=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}),X=G.getAddress();return{...Z({signer:G}),address:X}}async function J4({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}){let{getStellarToolbox:Z}=await import("@swapkit/toolboxes/stellar"),G=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}),X=await o({chain:$,ledgerClient:G});return{...Z({signer:G}),address:X}}async function j4({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}){let{getTronToolbox:Z}=await import("@swapkit/toolboxes/tron"),G=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}),X=await o({chain:$,ledgerClient:G});return{...Z({signer:G}),address:X}}async function Q4({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}){let{getSuiToolbox:Z}=await import("@swapkit/toolboxes/sui"),G=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}),X=await o({chain:$,ledgerClient:G});return{...Z({signer:G}),address:X}}async function Z4({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}){let{getTONToolbox:Z}=await import("@swapkit/toolboxes/ton"),G=await u({chain:$,derivationPath:Y,dmkSession:J,onDeviceActionState:j,transport:Q}),X=await o({chain:$,ledgerClient:G}),F=Z(),B=async(M)=>F.broadcastTransaction(await G.signTransaction(M));return{...F,address:X,estimateTransactionFee:({assetValue:M})=>Promise.resolve(v1.from({chain:q.Ton,value:M.isGasAsset?"0.01":"0.06"})),getAddress:()=>X,getBalance:()=>F.getBalance(X),sign:()=>{throw new t("wallet_ledger_method_not_supported",{method:"sign",wallet:N0.LEDGER})},signAndBroadcastTransaction:B,transfer:async({assetValue:M,memo:N,recipient:_,sweep:w})=>B(await F.createTransaction({assetValue:M,memo:N,recipient:_,sender:X,sweep:w}))}}function X4($){if(!p1($.chain))throw new t("wallet_ledger_chain_not_supported",{chain:$.chain});return U0($.chain).with(O9.union(...d1),(Y)=>n1({...$,chain:Y})).with(O9.union(...D9),(Y)=>r1({...$,chain:Y})).with(q.Cosmos,(Y)=>a1({...$,chain:Y})).with(q.THORChain,(Y)=>t1({...$,chain:Y})).with(q.Near,(Y)=>e1({...$,chain:Y})).with(q.Ripple,(Y)=>Y4({...$,chain:Y})).with(q.Stellar,(Y)=>J4({...$,chain:Y})).with(q.Cardano,(Y)=>$4({...$,chain:Y})).with(q.Tron,(Y)=>j4({...$,chain:Y})).with(q.Sui,(Y)=>Q4({...$,chain:Y})).with(q.Ton,(Y)=>Z4({...$,chain:Y})).exhaustive()}export{Z$ as preloadLedgerDMK,o1 as ledgerWallet,i1 as getLedgerExtendedPublicKey,r as getLedgerDMKSession,X$ as disconnectLedgerDMKSession,z8 as LEDGER_SUPPORTED_CHAINS};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=66F3CDFC7C1E009764756E2164756E21
|
|
4
4
|
//# sourceMappingURL=index.js.map
|