@swapkit/wallet-hardware 4.7.0 → 4.8.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/chunk-3yr76n9s.js +5 -0
- package/dist/chunk-3yr76n9s.js.map +10 -0
- package/dist/chunk-3zf2pqfd.js +4 -0
- package/dist/chunk-3zf2pqfd.js.map +10 -0
- package/dist/{chunk-e5bb5ftj.js → chunk-9tg9jj9j.js} +3 -3
- package/dist/{chunk-e5bb5ftj.js.map → chunk-9tg9jj9j.js.map} +1 -1
- package/dist/chunk-mrsfcest.js +4 -0
- package/dist/chunk-mrsfcest.js.map +10 -0
- package/dist/{chunk-25q3rr1d.js → chunk-n05bv2n5.js} +3 -3
- package/dist/{chunk-25q3rr1d.js.map → chunk-n05bv2n5.js.map} +1 -1
- package/dist/chunk-px09mwnt.js +4 -0
- package/dist/chunk-px09mwnt.js.map +10 -0
- package/dist/{chunk-w5xy6rdj.js → chunk-vwv6z2mk.js} +2 -2
- package/dist/chunk-x85da57j.js +4 -0
- package/dist/chunk-x85da57j.js.map +10 -0
- package/dist/chunk-y3yvq1zt.js +4 -0
- package/dist/chunk-y3yvq1zt.js.map +10 -0
- package/dist/keepkey/index.cjs +2 -2
- package/dist/keepkey/index.cjs.map +3 -3
- package/dist/keepkey/index.js +2 -2
- package/dist/keepkey/index.js.map +3 -3
- package/dist/ledger/index.cjs +3 -3
- package/dist/ledger/index.cjs.map +5 -6
- package/dist/ledger/index.js +3 -3
- package/dist/ledger/index.js.map +5 -6
- package/dist/trezor/index.cjs +2 -2
- package/dist/trezor/index.cjs.map +3 -3
- package/dist/trezor/index.js +2 -2
- package/dist/trezor/index.js.map +3 -3
- package/dist/types/keepkey/chains/utxo.d.ts +52 -14
- package/dist/types/keepkey/chains/utxo.d.ts.map +1 -1
- package/dist/types/ledger/clients/thorchain/lib.d.ts.map +1 -1
- package/dist/types/ledger/clients/utxo-legacy-adapter.d.ts +31 -0
- package/dist/types/ledger/clients/utxo-legacy-adapter.d.ts.map +1 -0
- package/dist/types/ledger/clients/utxo-psbt.d.ts +15 -0
- package/dist/types/ledger/clients/utxo-psbt.d.ts.map +1 -0
- package/dist/types/ledger/index.d.ts.map +1 -1
- package/dist/types/trezor/index.d.ts.map +1 -1
- package/package.json +3 -3
- /package/dist/{chunk-w5xy6rdj.js.map → chunk-vwv6z2mk.js.map} +0 -0
package/dist/keepkey/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as g,b as A}from"../chunk-7fsaymh4.js";import{c as S}from"../chunk-25q3rr1d.js";import{KeepKeySdk as Fz}from"@keepkey/keepkey-sdk";import{Chain as z,filterSupportedChains as Iz,NetworkDerivationPath as bz,SKConfig as o,SwapKitError as Ez,WalletOption as Qz}from"@swapkit/helpers";import{createWallet as Kz,getWalletSupportedChains as wz}from"@swapkit/wallet-core";import{Chain as r,DerivationPath as Zz,derivationPathToString as $z,GAIAConfig as s,getRPCUrl as Yz}from"@swapkit/helpers";async function n({sdk:Q,derivationPath:J}){let{DEFAULT_COSMOS_FEE_MAINNET:X,getCosmosToolbox:M,getFeeRateFromSwapKit:$,createStargateClient:Y}=await import("@swapkit/toolboxes/cosmos"),_=J?$z(J):`${Zz.GAIA}/0`,{address:j}=await Q.address.cosmosGetAddress({address_n:A(_)}),L=await M(r.Cosmos);if(X.amount[0])X.amount[0].amount=String(await $(s.chainId,500));return{...L,address:j,transfer:async({assetValue:W,recipient:q,memo:O})=>{let K=W.getBaseValue("string"),N=await L.getAccount(j),V=await Q.cosmos.cosmosSignAmino({signDoc:{account_number:N?.accountNumber.toString()??"",chain_id:s.chainId,fee:X,memo:O||"",msgs:[{type:"cosmos-sdk/MsgSend",value:{amount:[{amount:K,denom:"uatom"}],from_address:j,to_address:q}}],sequence:N?.sequence.toString()??""},signerAddress:j}),D=atob(V.serialized),w=new Uint8Array(D.length).map((U,H)=>D.charCodeAt(H)),Z=await Yz(r.Cosmos);return(await(await Y(Z)).broadcastTx(w)).transactionHash}}}import{ChainToChainId as qz,derivationPathToString as jz,NetworkDerivationPath as Bz,SwapKitError as v}from"@swapkit/helpers";import{AbstractSigner as Lz}from"ethers";class C extends Lz{sdk;chain;derivationPath;address;provider;constructor({sdk:Q,chain:J,derivationPath:X,provider:M}){super();this.sdk=Q,this.chain=J,this.derivationPath=X||Bz.ETH,this.address="",this.provider=M}signTypedData=async(Q,J,X,M)=>{let{buildEIP712DomainType:$}=await import("@swapkit/toolboxes/evm"),{TypedDataEncoder:Y}=await import("ethers"),{EIP712Domain:_,...j}=J,L=M??Y.from(j).primaryType,G=$(Q),W=await this.getAddress(),q=await this.sdk.eth.ethSignTypedData({address:W,typedData:{domain:Q,message:X,primaryType:L,types:{EIP712Domain:G,...j}}});if(typeof q!=="string")throw new v("wallet_keepkey_method_not_supported",{method:"signTypedData"});return q.startsWith("0x")?q:`0x${q}`};getAddress=async()=>{if(this.address)return this.address;let{address:Q}=await this.sdk.address.ethereumGetAddress({address_n:A(jz(this.derivationPath))});return this.address=Q,Q};signMessage=(Q)=>this.sdk.eth.ethSign({address:this.address,message:Q});signTransaction=async({to:Q,value:J,gasLimit:X,nonce:M,data:$,maxFeePerGas:Y,maxPriorityFeePerGas:_,gasPrice:j})=>{if(!Q)throw new v("wallet_keepkey_invalid_params",{reason:"Missing to address"});if(!X)throw new v("wallet_keepkey_invalid_params",{reason:"Missing gasLimit"});if(!$)throw new v("wallet_keepkey_invalid_params",{reason:"Missing data"});let L=!!((Y||_)&&!j);if(L&&!Y)throw new v("wallet_keepkey_invalid_params",{reason:"Missing maxFeePerGas"});if(L&&!_)throw new v("wallet_keepkey_invalid_params",{reason:"Missing maxPriorityFeePerGas"});if(!(L||j))throw new v("wallet_keepkey_invalid_params",{reason:"Missing gasPrice"});let{toHexString:G}=await import("@swapkit/toolboxes/evm"),W=M?BigInt(M):BigInt(await this.provider.getTransactionCount(await this.getAddress(),"pending")),q={addressNList:[2147483692,2147483708,2147483648,0,0],chainId:G(BigInt(qz[this.chain])),data:$,from:this.address,gas:G(BigInt(X)),nonce:G(W),to:Q.toString(),value:G(BigInt(J||0)),...L&&{maxFeePerGas:G(BigInt(Y?.toString()||"0")),maxPriorityFeePerGas:G(BigInt(_?.toString()||"0"))},...!L&&{gasPrice:G(BigInt(j?.toString()||"0"))}};return(await this.sdk.eth.ethSignTransaction(q)).serialized};sendTransaction=async(Q)=>{if(!this.provider)throw new v("wallet_keepkey_no_provider");let J=await this.signTransaction(Q);return await this.provider.broadcastTransaction(J)};connect=(Q)=>new C({chain:this.chain,derivationPath:this.derivationPath,provider:Q,sdk:this.sdk})}import{Chain as m,DerivationPath as Wz,derivationPathToString as Gz,getRPCUrl as t,MAYAConfig as Rz,SwapKitError as Uz}from"@swapkit/helpers";async function a({sdk:Q,derivationPath:J}){let{createStargateClient:X,getCosmosToolbox:M}=await import("@swapkit/toolboxes/cosmos"),$=await M(m.Maya),Y=J?Gz(J):`${Wz.MAYA}/0`,{address:_}=await Q.address.mayachainGetAddress({address_n:A(Y)}),j=async({assetValue:W,recipient:q,sender:O,memo:K})=>{let N=await import("@cosmjs/amino"),V=N.makeSignDoc??N.default?.makeSignDoc,{getDenomWithChain:D}=await import("@swapkit/toolboxes/cosmos"),w=await $.getAccount(O);if(!w)throw new Uz("wallet_keepkey_account_not_found");let{accountNumber:Z,sequence:R=0}=w,F=W.getBaseValue("string"),U=q&&q!=="",H=U?{type:"mayachain/MsgSend",value:{amount:[{amount:F,denom:W.symbol.toLowerCase()}],from_address:O,to_address:q}}:{type:"mayachain/MsgDeposit",value:{coins:[{amount:F,asset:D(W)}],memo:K,signer:O}},T=V([H],{amount:[],gas:"500000000"},Rz.chainId,K,Z?.toString(),R),B=await(U?Q.mayachain.mayachainSignAminoTransfer:Q.mayachain.mayachainSignAminoDeposit)({signDoc:T,signerAddress:O}),I=atob(B.serialized);return new Uint8Array(I.length).map((b,f)=>I.charCodeAt(f))};return{...$,address:_,deposit:async({assetValue:W,memo:q})=>{let O=await t(m.Maya),K=await X(O),N=await j({assetValue:W,memo:q,sender:_}),{transactionHash:V}=await K.broadcastTx(N);return V},transfer:async({assetValue:W,recipient:q,memo:O})=>{let K=await t(m.Maya),N=await X(K),V=await j({assetValue:W,memo:O,recipient:q,sender:_}),{transactionHash:D}=await N.broadcastTx(V);return D}}}import{Chain as u,DerivationPath as _z,derivationPathToString as Nz,getRPCUrl as i,SwapKitError as Oz,THORConfig as Dz}from"@swapkit/helpers";async function e({sdk:Q,derivationPath:J}){let X=await import("@cosmjs/amino"),M=X.makeSignDoc??X.default?.makeSignDoc,{buildAminoMsg:$,getDefaultChainFee:Y,createStargateClient:_,getCosmosToolbox:j}=await import("@swapkit/toolboxes/cosmos"),L=await j(u.THORChain),G=J?Nz(J):`${_z.THOR}/0`,{address:W}=await Q.address.thorchainGetAddress({address_n:A(G)}),q=async({assetValue:N,recipient:V,sender:D,memo:w})=>{let Z=await L.getAccount(D);if(!Z)throw new Oz("wallet_keepkey_account_not_found");let{accountNumber:R,sequence:F=0}=Z,U=V&&V!=="",H=$({assetValue:N,memo:w,recipient:V,sender:D}),T=M([H],Y(u.THORChain),Dz.chainId,w,R?.toString(),F),E=U?await Q.thorchain.thorchainSignAminoTransfer({signDoc:T,signerAddress:D}):await Q.thorchain.thorchainSignAminoDeposit({signDoc:T,signerAddress:D}),B=atob(E.serialized);return new Uint8Array(B.length).map((I,b)=>B.charCodeAt(b))};return{...L,address:W,deposit:async({assetValue:N,memo:V})=>{let D=await i(u.THORChain),w=await _(D),Z=await q({assetValue:N,memo:V,sender:W}),{transactionHash:R}=await w.broadcastTx(Z);return R},transfer:async({assetValue:N,recipient:V,memo:D})=>{let w=await i(u.THORChain),Z=await _(w),R=await q({assetValue:N,memo:D,recipient:V,sender:W}),{transactionHash:F}=await Z.broadcastTx(R);return F}}}import{Chain as P,DerivationPath as p,derivationPathToString as c,FeeOption as zz,SwapKitError as h}from"@swapkit/helpers";import{createHDWalletHelpers as Hz,getNetworkForChain as Mz,getUtxoApi as Vz,stripToCashAddress as d}from"@swapkit/toolboxes/utxo";async function Jz({sdk:Q,chain:J,derivationPath:X}){let{getUtxoToolbox:M}=await import("@swapkit/toolboxes/utxo"),$=await M(J),Y=[P.Bitcoin,P.Litecoin].includes(J)?"p2wpkh":"p2pkh",_=X?c(X):`${p[J]}/0`,j={address_n:A(_),coin:g[J],script_type:Y},L=(await Q.address.utxoGetAddress(j)).address,G=Mz(J),W=async(Z,R,F="")=>{let U=[];for(let E=0;E<Z.outputsLength;E++){let B=Z.getOutput(E),I=Z.getOutputAddress(E,G),b=Number(B.amount);if(I===L)U.push({addressNList:j.address_n,addressType:"change",amount:b,isChange:!0,scriptType:Y});else if(I){let f=J===P.BitcoinCash?d(I):I;if(f)U.push({address:f,addressType:"spend",amount:b})}}let H=(E)=>{return E.filter((B)=>B!==null&&typeof B==="object"&&Object.keys(B).length>0)};return(await Q.utxo.utxoSignTransaction({coin:g[J],inputs:R,opReturnData:F,outputs:H(U)})).serializedTx?.toString()},q=async({recipient:Z,feeOptionKey:R,feeRate:F,memo:U,...H})=>{if(!L)throw new h("wallet_keepkey_invalid_params",{reason:"From address must be provided"});if(!Z)throw new h("wallet_keepkey_invalid_params",{reason:"Recipient address must be provided"});let T=J===P.BitcoinCash?$.buildTx:$.createTransaction,{tx:E,inputs:B}=await T({...H,feeRate:F||(await $.getFeeRates())[R||zz.Fast],fetchTxHex:!0,memo:U,recipient:Z,sender:L}),I=B.map(({value:f,index:y,hash:k,txHex:x})=>({addressNList:j.address_n,amount:f.toString(),hex:x||"",scriptType:Y,txid:k,vout:y})),b=await W(E,I,U);return $.broadcastTx(b)},O=async(Z,R,F="")=>{let U=A(X?c(X.slice(0,3)):p[J]),H=[];for(let B=0;B<Z.outputsLength;B++){let I=Z.getOutput(B),b=Z.getOutputAddress(B,G),f=Number(I.amount);if(b===L)H.push({addressNList:j.address_n,addressType:"change",amount:f,isChange:!0,scriptType:Y});else if(b){let y=J===P.BitcoinCash?d(b):b;if(y)H.push({address:y,addressType:"spend",amount:f})}}let T=R.map(({hash:B,index:I,value:b,txHex:f,derivationIndex:y,isChange:k})=>{let x=k?1:0;return{addressNList:[...U,x,y],amount:b.toString(),hex:f||"",scriptType:Y,txid:B,vout:I}});return(await Q.utxo.utxoSignTransaction({coin:g[J],inputs:T,opReturnData:F,outputs:H.filter((B)=>B!==null&&typeof B==="object"&&Object.keys(B).length>0)})).serializedTx?.toString()||""},K=async({utxos:Z,recipient:R,assetValue:F,memo:U,feeRate:H,feeOptionKey:T})=>{let E=H||(await $.getFeeRates())[T||zz.Fast],B=J===P.BitcoinCash?$.buildTx:$.createTransaction,{tx:I,inputs:b}=await B({assetValue:F,feeRate:E,fetchTxHex:!0,memo:U,recipient:R,sender:L}),f=b.map((k)=>{let x=Z.find((l)=>l.hash===k.hash&&l.index===k.index);return{...k,derivationIndex:x?.derivationIndex??0,isChange:x?.isChange??!1}}),y=await O(I,f,U);return $.broadcastTx(y)},N=X?c(X.slice(0,3)):p[J].split("/").slice(0,4).join("/");async function V(){try{let Z={address_n:A(N),coin:g[J],script_type:Y,showDisplay:!1,symbol:J.toUpperCase()},R=await Q.system.info.getPublicKey(Z);return{path:N,xpub:R.xpub}}catch(Z){throw new h("wallet_keepkey_failed_to_get_public_key",{chain:J,error:Z instanceof Error?Z.message:"Unknown error"})}}async function D({index:Z,change:R=!1}){try{let F=`${N}/${Number(R)}/${Z}`,U=await Q.address.utxoGetAddress({address_n:A(F),coin:g[J],script_type:Y}),H=U.address;if(J===P.BitcoinCash)H=d(U.address);return{address:H,change:R,index:Z,pubkey:""}}catch{return}}let w=Hz({chain:J,deriveAddress:D,getBalance:$.getBalance,getUtxos:(Z)=>Vz(J).getUtxos({address:Z,fetchTxHex:!0})});return{...$,...w,address:L,deriveAddressAtIndex:D,getExtendedPublicKey:V,signTransaction:W,signTransactionWithMultipleInputs:O,transfer:q,transferFromMultipleAddresses:K}}var fz=Kz({connect:({addChain:Q,supportedChains:J,walletType:X})=>async function($,Y){let _=Iz({chains:$,supportedChains:J,walletType:X}),j=o.get("integrations").keepKey;if(!j)throw Error("KeepKey config not found");let L=o.get("apiKeys").keepKey||"1234";await Xz();let G={apiKey:L,pairingInfo:j},W=await Fz.create(G);if(G.apiKey&&G.apiKey!==L)o.setApiKey("keepKey",G.apiKey);return await Promise.all(_.map(async(q)=>{let O=await Az({chain:q,derivationPath:Y?.[q]||bz[q],sdk:W}),K=await O.getAddress()||"";Q({...O,address:K,chain:q,walletType:Qz.KEEPKEY})})),!0},directSigningSupport:{[z.Arbitrum]:!0,[z.Avalanche]:!0,[z.Base]:!0,[z.Berachain]:!0,[z.BinanceSmartChain]:!0,[z.Ethereum]:!0,[z.Gnosis]:!0,[z.Monad]:!0,[z.Optimism]:!0,[z.Polygon]:!0,[z.Ripple]:!0,[z.XLayer]:!0},name:"connectKeepkey",supportedChains:[z.Arbitrum,z.Avalanche,z.Base,z.Berachain,z.BinanceSmartChain,z.Bitcoin,z.BitcoinCash,z.Cosmos,z.Dogecoin,z.Dash,z.Ethereum,z.Gnosis,z.Litecoin,z.Monad,z.Ripple,z.Optimism,z.Polygon,z.THORChain,z.Maya,z.XLayer],walletType:Qz.KEEPKEY}),QJ=wz(fz);async function Az({sdk:Q,chain:J,derivationPath:X}){let{getProvider:M,getEvmToolboxAsync:$}=await import("@swapkit/toolboxes/evm");switch(J){case z.BinanceSmartChain:case z.Arbitrum:case z.Berachain:case z.Optimism:case z.Polygon:case z.Avalanche:case z.Base:case z.Ethereum:case z.Gnosis:case z.Monad:case z.XLayer:{let Y=await M(J),_=new C({chain:J,derivationPath:X,provider:Y,sdk:Q});return await $(J,{provider:Y,signer:_})}case z.Cosmos:return n({derivationPath:X,sdk:Q});case z.THORChain:return e({derivationPath:X,sdk:Q});case z.Maya:return a({derivationPath:X,sdk:Q});case z.Bitcoin:case z.BitcoinCash:case z.Dash:case z.Dogecoin:case z.Litecoin:return Jz({chain:J,derivationPath:X,sdk:Q});case z.Ripple:{let{rippleWalletMethods:Y}=await import("../chunk-w5xy6rdj.js");return Y({derivationPath:X,sdk:Q})}default:throw new Ez("wallet_keepkey_chain_not_supported",{chain:J})}}async function Xz(Q=0){if(Q>=3)alert("KeepKey desktop is required for keepkey-sdk, please go to https://keepkey.com/get-started");if(!await Sz())window.location.assign("keepkey://launch"),await new Promise((X)=>setTimeout(X,30000)),await Xz(Q+1)}async function Sz(Q="http://localhost:1646/spec/swagger.json"){try{return(await fetch(Q)).status===200}catch{return!1}}export{fz as keepkeyWallet,QJ as KEEPKEY_SUPPORTED_CHAINS};
|
|
1
|
+
import{a as C,b as f}from"../chunk-7fsaymh4.js";import{d as S}from"../chunk-n05bv2n5.js";import{KeepKeySdk as Iz}from"@keepkey/keepkey-sdk";import{Chain as z,filterSupportedChains as Tz,NetworkDerivationPath as fz,SKConfig as r,SwapKitError as Az,WalletOption as $z}from"@swapkit/helpers";import{createWallet as Sz,getWalletSupportedChains as yz}from"@swapkit/wallet-core";import{Chain as s,DerivationPath as qz,derivationPathToString as jz,GAIAConfig as n,getRPCUrl as Bz}from"@swapkit/helpers";async function a({sdk:Q,derivationPath:J}){let{DEFAULT_COSMOS_FEE_MAINNET:X,getCosmosToolbox:F,getFeeRateFromSwapKit:Y,createStargateClient:q}=await import("@swapkit/toolboxes/cosmos"),D=J?jz(J):`${qz.GAIA}/0`,{address:B}=await Q.address.cosmosGetAddress({address_n:f(D)}),L=await F(s.Cosmos);if(X.amount[0])X.amount[0].amount=String(await Y(n.chainId,500));return{...L,address:B,transfer:async({assetValue:R,recipient:j,memo:M})=>{let I=R.getBaseValue("string"),V=await L.getAccount(B),b=await Q.cosmos.cosmosSignAmino({signDoc:{account_number:V?.accountNumber.toString()??"",chain_id:n.chainId,fee:X,memo:M||"",msgs:[{type:"cosmos-sdk/MsgSend",value:{amount:[{amount:I,denom:"uatom"}],from_address:B,to_address:j}}],sequence:V?.sequence.toString()??""},signerAddress:B}),H=atob(b.serialized),T=new Uint8Array(H.length).map((U,W)=>H.charCodeAt(W)),A=await Bz(s.Cosmos);return(await(await q(A)).broadcastTx(T)).transactionHash}}}import{ChainToChainId as Lz,derivationPathToString as Wz,NetworkDerivationPath as Gz,SwapKitError as v}from"@swapkit/helpers";import{AbstractSigner as Rz}from"ethers";class u extends Rz{sdk;chain;derivationPath;address;provider;constructor({sdk:Q,chain:J,derivationPath:X,provider:F}){super();this.sdk=Q,this.chain=J,this.derivationPath=X||Gz.ETH,this.address="",this.provider=F}signTypedData=async(Q,J,X,F)=>{let{buildEIP712DomainType:Y}=await import("@swapkit/toolboxes/evm"),{TypedDataEncoder:q}=await import("ethers"),{EIP712Domain:D,...B}=J,L=F??q.from(B).primaryType,_=Y(Q),R=await this.getAddress(),j=await this.sdk.eth.ethSignTypedData({address:R,typedData:{domain:Q,message:X,primaryType:L,types:{EIP712Domain:_,...B}}});if(typeof j!=="string")throw new v("wallet_keepkey_method_not_supported",{method:"signTypedData"});return j.startsWith("0x")?j:`0x${j}`};getAddress=async()=>{if(this.address)return this.address;let{address:Q}=await this.sdk.address.ethereumGetAddress({address_n:f(Wz(this.derivationPath))});return this.address=Q,Q};signMessage=(Q)=>this.sdk.eth.ethSign({address:this.address,message:Q});signTransaction=async({to:Q,value:J,gasLimit:X,nonce:F,data:Y,maxFeePerGas:q,maxPriorityFeePerGas:D,gasPrice:B})=>{if(!Q)throw new v("wallet_keepkey_invalid_params",{reason:"Missing to address"});if(!X)throw new v("wallet_keepkey_invalid_params",{reason:"Missing gasLimit"});if(!Y)throw new v("wallet_keepkey_invalid_params",{reason:"Missing data"});let L=!!((q||D)&&!B);if(L&&!q)throw new v("wallet_keepkey_invalid_params",{reason:"Missing maxFeePerGas"});if(L&&!D)throw new v("wallet_keepkey_invalid_params",{reason:"Missing maxPriorityFeePerGas"});if(!(L||B))throw new v("wallet_keepkey_invalid_params",{reason:"Missing gasPrice"});let{toHexString:_}=await import("@swapkit/toolboxes/evm"),R=F?BigInt(F):BigInt(await this.provider.getTransactionCount(await this.getAddress(),"pending")),j={addressNList:[2147483692,2147483708,2147483648,0,0],chainId:_(BigInt(Lz[this.chain])),data:Y,from:this.address,gas:_(BigInt(X)),nonce:_(R),to:Q.toString(),value:_(BigInt(J||0)),...L&&{maxFeePerGas:_(BigInt(q?.toString()||"0")),maxPriorityFeePerGas:_(BigInt(D?.toString()||"0"))},...!L&&{gasPrice:_(BigInt(B?.toString()||"0"))}};return(await this.sdk.eth.ethSignTransaction(j)).serialized};sendTransaction=async(Q)=>{if(!this.provider)throw new v("wallet_keepkey_no_provider");let J=await this.signTransaction(Q);return await this.provider.broadcastTransaction(J)};connect=(Q)=>new u({chain:this.chain,derivationPath:this.derivationPath,provider:Q,sdk:this.sdk})}import{Chain as c,DerivationPath as Uz,derivationPathToString as _z,getRPCUrl as i,MAYAConfig as Nz,SwapKitError as Oz}from"@swapkit/helpers";async function t({sdk:Q,derivationPath:J}){let{createStargateClient:X,getCosmosToolbox:F}=await import("@swapkit/toolboxes/cosmos"),Y=await F(c.Maya),q=J?_z(J):`${Uz.MAYA}/0`,{address:D}=await Q.address.mayachainGetAddress({address_n:f(q)}),B=async({assetValue:R,recipient:j,sender:M,memo:I})=>{let V=await import("@cosmjs/amino"),b=V.makeSignDoc??V.default?.makeSignDoc,{getDenomWithChain:H}=await import("@swapkit/toolboxes/cosmos"),T=await Y.getAccount(M);if(!T)throw new Oz("wallet_keepkey_account_not_found");let{accountNumber:A,sequence:Z=0}=T,$=R.getBaseValue("string"),U=j&&j!=="",W=U?{type:"mayachain/MsgSend",value:{amount:[{amount:$,denom:R.symbol.toLowerCase()}],from_address:M,to_address:j}}:{type:"mayachain/MsgDeposit",value:{coins:[{amount:$,asset:H(R)}],memo:I,signer:M}},O=b([W],{amount:[],gas:"500000000"},Nz.chainId,I,A?.toString(),Z),N=await(U?Q.mayachain.mayachainSignAminoTransfer:Q.mayachain.mayachainSignAminoDeposit)({signDoc:O,signerAddress:M}),G=atob(N.serialized);return new Uint8Array(G.length).map((K,w)=>G.charCodeAt(w))};return{...Y,address:D,deposit:async({assetValue:R,memo:j})=>{let M=await i(c.Maya),I=await X(M),V=await B({assetValue:R,memo:j,sender:D}),{transactionHash:b}=await I.broadcastTx(V);return b},transfer:async({assetValue:R,recipient:j,memo:M})=>{let I=await i(c.Maya),V=await X(I),b=await B({assetValue:R,memo:M,recipient:j,sender:D}),{transactionHash:H}=await V.broadcastTx(b);return H}}}import{Chain as l,DerivationPath as Dz,derivationPathToString as Hz,getRPCUrl as e,SwapKitError as Mz,THORConfig as Vz}from"@swapkit/helpers";async function zz({sdk:Q,derivationPath:J}){let X=await import("@cosmjs/amino"),F=X.makeSignDoc??X.default?.makeSignDoc,{buildAminoMsg:Y,getDefaultChainFee:q,createStargateClient:D,getCosmosToolbox:B}=await import("@swapkit/toolboxes/cosmos"),L=await B(l.THORChain),_=J?Hz(J):`${Dz.THOR}/0`,{address:R}=await Q.address.thorchainGetAddress({address_n:f(_)}),j=async({assetValue:V,recipient:b,sender:H,memo:T})=>{let A=await L.getAccount(H);if(!A)throw new Mz("wallet_keepkey_account_not_found");let{accountNumber:Z,sequence:$=0}=A,U=b&&b!=="",W=Y({assetValue:V,memo:T,recipient:b,sender:H}),O=F([W],q(l.THORChain),Vz.chainId,T,Z?.toString(),$),E=U?await Q.thorchain.thorchainSignAminoTransfer({signDoc:O,signerAddress:H}):await Q.thorchain.thorchainSignAminoDeposit({signDoc:O,signerAddress:H}),N=atob(E.serialized);return new Uint8Array(N.length).map((G,K)=>N.charCodeAt(K))};return{...L,address:R,deposit:async({assetValue:V,memo:b})=>{let H=await e(l.THORChain),T=await D(H),A=await j({assetValue:V,memo:b,sender:R}),{transactionHash:Z}=await T.broadcastTx(A);return Z},transfer:async({assetValue:V,recipient:b,memo:H})=>{let T=await e(l.THORChain),A=await D(T),Z=await j({assetValue:V,memo:H,recipient:b,sender:R}),{transactionHash:$}=await A.broadcastTx(Z);return $}}}import{Chain as x,DerivationPath as Jz,derivationPathToString as m,FeeOption as Qz,SwapKitError as h}from"@swapkit/helpers";import{assertDerivationIndex as d,createHDWalletHelpers as Fz,getNetworkForChain as bz,getUTXOAccountIndexFromPath as Xz,getUTXOAccountPath as Ez,getUTXOAddressPath as Kz,getUtxoApi as wz,stripToCashAddress as o}from"@swapkit/toolboxes/utxo";async function Zz({sdk:Q,chain:J,derivationPath:X}){let{getUtxoToolbox:F}=await import("@swapkit/toolboxes/utxo"),Y=await F(J),q=[x.Bitcoin,x.Litecoin].includes(J)?"p2wpkh":"p2pkh",D=X?m(X):`${Jz[J]}/0`,B={address_n:f(D),coin:C[J],script_type:q},L=(await Q.address.utxoGetAddress(B)).address,_=bz(J),R=async(Z,$,U="")=>{let W=[];for(let N=0;N<Z.outputsLength;N++){let G=Z.getOutput(N),K=Z.getOutputAddress(N,_),w=Number(G.amount);if(K===L)W.push({addressNList:B.address_n,addressType:"change",amount:w,isChange:!0,scriptType:q});else if(K){let y=J===x.BitcoinCash?o(K):K;if(y)W.push({address:y,addressType:"spend",amount:w})}}let O=(N)=>{return N.filter((G)=>G!==null&&typeof G==="object"&&Object.keys(G).length>0)};return(await Q.utxo.utxoSignTransaction({coin:C[J],inputs:$,opReturnData:U,outputs:O(W)})).serializedTx?.toString()},j=async({recipient:Z,feeOptionKey:$,feeRate:U,memo:W,...O})=>{if(!L)throw new h("wallet_keepkey_invalid_params",{reason:"From address must be provided"});if(!Z)throw new h("wallet_keepkey_invalid_params",{reason:"Recipient address must be provided"});let E=J===x.BitcoinCash?Y.buildTx:Y.createTransaction,{tx:N,inputs:G}=await E({...O,feeRate:U||(await Y.getFeeRates())[$||Qz.Fast],fetchTxHex:!0,memo:W,recipient:Z,sender:L}),K=G.map(({value:y,index:k,hash:P,txHex:g})=>({addressNList:B.address_n,amount:y.toString(),hex:g||"",scriptType:q,txid:P,vout:k})),w=await R(N,K,W);return Y.broadcastTx(w)},M=async(Z,$,U="")=>{let W=f(X?m(X.slice(0,3)):Jz[J]),O=[];for(let G=0;G<Z.outputsLength;G++){let K=Z.getOutput(G),w=Z.getOutputAddress(G,_),y=Number(K.amount);if(w===L)O.push({addressNList:B.address_n,addressType:"change",amount:y,isChange:!0,scriptType:q});else if(w){let k=J===x.BitcoinCash?o(w):w;if(k)O.push({address:k,addressType:"spend",amount:y})}}let E=$.map(({hash:G,index:K,value:w,txHex:y,derivationIndex:k,isChange:P})=>{let g=P?1:0;return{addressNList:[...W,g,k],amount:w.toString(),hex:y||"",scriptType:q,txid:G,vout:K}});return(await Q.utxo.utxoSignTransaction({coin:C[J],inputs:E,opReturnData:U,outputs:O.filter((G)=>G!==null&&typeof G==="object"&&Object.keys(G).length>0)})).serializedTx?.toString()||""},I=async({utxos:Z,recipient:$,assetValue:U,memo:W,feeRate:O,feeOptionKey:E})=>{let N=O||(await Y.getFeeRates())[E||Qz.Fast],G=J===x.BitcoinCash?Y.buildTx:Y.createTransaction,{tx:K,inputs:w}=await G({assetValue:U,feeRate:N,fetchTxHex:!0,memo:W,recipient:$,sender:L}),y=w.map((P)=>{let g=Z.find((p)=>p.hash===P.hash&&p.index===P.index);return{...P,derivationIndex:g?.derivationIndex??0,isChange:g?.isChange??!1}}),k=await M(K,y,W);return Y.broadcastTx(k)};async function V({accountIndex:Z}={}){try{let $=Ez({accountIndex:Z,chain:J,derivationPath:X}),U=m($),W={address_n:f(U),coin:C[J],script_type:q,showDisplay:!1,symbol:J.toUpperCase()},O=await Q.system.info.getPublicKey(W);return{accountIndex:Xz($),path:U,xpub:O.xpub}}catch($){throw new h("wallet_keepkey_failed_to_get_public_key",{chain:J,error:$ instanceof Error?$.message:"Unknown error"})}}function b(){return V()}async function H({accountIndex:Z,index:$,change:U=!1}){try{d("index",$);let W=Kz({accountIndex:Z,chain:J,change:U,derivationPath:X,index:$}),O=m(W),E=await Q.address.utxoGetAddress({address_n:f(O),coin:C[J],script_type:q}),N=E.address;if(J===x.BitcoinCash)N=o(E.address);return{accountIndex:Xz(W),address:N,change:U,index:$,path:O,pubkey:""}}catch{return}}async function T({accountIndex:Z,count:$,startIndex:U=0,change:W=!1}){return d("count",$),d("startIndex",U),(await Promise.all(Array.from({length:$},(E,N)=>H({accountIndex:Z,change:W,index:U+N})))).filter((E)=>!!E)}let A=Fz({chain:J,deriveAddress:H,getBalance:Y.getBalance,getUtxos:(Z)=>wz(J).getUtxos({address:Z,fetchTxHex:!0})});return{...Y,...A,address:L,deriveAddressAtIndex:H,deriveAddresses:T,getExtendedPublicKey:b,getExtendedPublicKeyInfo:V,signTransaction:R,signTransactionWithMultipleInputs:M,transfer:j,transferFromMultipleAddresses:I}}var kz=Sz({connect:({addChain:Q,supportedChains:J,walletType:X})=>async function(Y,q){let D=Tz({chains:Y,supportedChains:J,walletType:X}),B=r.get("integrations").keepKey;if(!B)throw Error("KeepKey config not found");let L=r.get("apiKeys").keepKey||"1234";await Yz();let _={apiKey:L,pairingInfo:B},R=await Iz.create(_);if(_.apiKey&&_.apiKey!==L)r.setApiKey("keepKey",_.apiKey);return await Promise.all(D.map(async(j)=>{let M=await vz({chain:j,derivationPath:q?.[j]||fz[j],sdk:R}),I=await M.getAddress()||"";Q({...M,address:I,chain:j,walletType:$z.KEEPKEY})})),!0},directSigningSupport:{[z.Arbitrum]:!0,[z.Avalanche]:!0,[z.Base]:!0,[z.Berachain]:!0,[z.BinanceSmartChain]:!0,[z.Ethereum]:!0,[z.Gnosis]:!0,[z.Monad]:!0,[z.Optimism]:!0,[z.Polygon]:!0,[z.Ripple]:!0,[z.XLayer]:!0},name:"connectKeepkey",supportedChains:[z.Arbitrum,z.Avalanche,z.Base,z.Berachain,z.BinanceSmartChain,z.Bitcoin,z.BitcoinCash,z.Cosmos,z.Dogecoin,z.Dash,z.Ethereum,z.Gnosis,z.Litecoin,z.Monad,z.Ripple,z.Optimism,z.Polygon,z.THORChain,z.Maya,z.XLayer],walletType:$z.KEEPKEY}),qJ=yz(kz);async function vz({sdk:Q,chain:J,derivationPath:X}){let{getProvider:F,getEvmToolboxAsync:Y}=await import("@swapkit/toolboxes/evm");switch(J){case z.BinanceSmartChain:case z.Arbitrum:case z.Berachain:case z.Optimism:case z.Polygon:case z.Avalanche:case z.Base:case z.Ethereum:case z.Gnosis:case z.Monad:case z.XLayer:{let q=await F(J),D=new u({chain:J,derivationPath:X,provider:q,sdk:Q});return await Y(J,{provider:q,signer:D})}case z.Cosmos:return a({derivationPath:X,sdk:Q});case z.THORChain:return zz({derivationPath:X,sdk:Q});case z.Maya:return t({derivationPath:X,sdk:Q});case z.Bitcoin:case z.BitcoinCash:case z.Dash:case z.Dogecoin:case z.Litecoin:return Zz({chain:J,derivationPath:X,sdk:Q});case z.Ripple:{let{rippleWalletMethods:q}=await import("../chunk-vwv6z2mk.js");return q({derivationPath:X,sdk:Q})}default:throw new Az("wallet_keepkey_chain_not_supported",{chain:J})}}async function Yz(Q=0){if(Q>=3)alert("KeepKey desktop is required for keepkey-sdk, please go to https://keepkey.com/get-started");if(!await Pz())window.location.assign("keepkey://launch"),await new Promise((X)=>setTimeout(X,30000)),await Yz(Q+1)}async function Pz(Q="http://localhost:1646/spec/swagger.json"){try{return(await fetch(Q)).status===200}catch{return!1}}export{kz as keepkeyWallet,qJ as KEEPKEY_SUPPORTED_CHAINS};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=F566CD3DEF093ACA64756E2164756E21
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
"import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n type Chain,\n ChainToChainId,\n type DerivationPathArray,\n derivationPathToString,\n NetworkDerivationPath,\n SwapKitError,\n} from \"@swapkit/helpers\";\nimport type { JsonRpcProvider, Provider, TransactionRequest, TypedDataDomain, TypedDataField } from \"ethers\";\nimport { AbstractSigner } from \"ethers\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\ninterface KeepKeyEVMSignerParams {\n sdk: KeepKeySdk;\n chain: Chain;\n derivationPath?: DerivationPathArray;\n provider: Provider | JsonRpcProvider;\n}\n\nexport class KeepKeySigner extends AbstractSigner {\n private sdk: KeepKeySdk;\n private chain: Chain;\n private derivationPath: DerivationPathArray;\n private address: string;\n readonly provider: Provider | JsonRpcProvider;\n\n constructor({ sdk, chain, derivationPath, provider }: KeepKeyEVMSignerParams) {\n super();\n this.sdk = sdk;\n this.chain = chain;\n this.derivationPath = derivationPath || NetworkDerivationPath.ETH;\n this.address = \"\";\n this.provider = provider;\n }\n\n signTypedData = async (\n domain: TypedDataDomain,\n types: Record<string, TypedDataField[]>,\n value: Record<string, unknown>,\n explicitPrimaryType?: string,\n ) => {\n const { buildEIP712DomainType } = await import(\"@swapkit/toolboxes/evm\");\n const { TypedDataEncoder } = await import(\"ethers\");\n\n const { EIP712Domain: _, ...filteredTypes } = types;\n const primaryType = explicitPrimaryType ?? TypedDataEncoder.from(filteredTypes).primaryType;\n const domainTypes = buildEIP712DomainType(domain);\n\n const address = await this.getAddress();\n const result = await this.sdk.eth.ethSignTypedData({\n address,\n typedData: {\n domain: domain as Record<string, unknown>,\n message: value,\n primaryType,\n types: { EIP712Domain: domainTypes, ...filteredTypes },\n },\n });\n\n if (typeof result !== \"string\") {\n throw new SwapKitError(\"wallet_keepkey_method_not_supported\", { method: \"signTypedData\" });\n }\n\n return result.startsWith(\"0x\") ? result : `0x${result}`;\n };\n\n getAddress = async () => {\n if (this.address) return this.address;\n const { address } = await this.sdk.address.ethereumGetAddress({\n address_n: bip32ToAddressNList(derivationPathToString(this.derivationPath)),\n });\n\n this.address = address;\n return address;\n };\n\n signMessage = (message: string) => this.sdk.eth.ethSign({ address: this.address, message }) as Promise<string>;\n\n signTransaction = async ({\n to,\n value,\n gasLimit,\n nonce,\n data,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n }: TransactionRequest) => {\n if (!to) throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing to address\" });\n if (!gasLimit) throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing gasLimit\" });\n if (!data) throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing data\" });\n\n const isEIP1559 = !!((maxFeePerGas || maxPriorityFeePerGas) && !gasPrice);\n if (isEIP1559 && !maxFeePerGas)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing maxFeePerGas\" });\n if (isEIP1559 && !maxPriorityFeePerGas)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing maxPriorityFeePerGas\" });\n if (!(isEIP1559 || gasPrice))\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing gasPrice\" });\n\n const { toHexString } = await import(\"@swapkit/toolboxes/evm\");\n\n const nonceValue = nonce\n ? BigInt(nonce)\n : BigInt(await this.provider.getTransactionCount(await this.getAddress(), \"pending\"));\n\n const input = {\n addressNList: [2147483692, 2147483708, 2147483648, 0, 0],\n chainId: toHexString(BigInt(ChainToChainId[this.chain])),\n data,\n from: this.address,\n gas: toHexString(BigInt(gasLimit)),\n nonce: toHexString(nonceValue),\n to: to.toString(),\n value: toHexString(BigInt(value || 0)),\n ...(isEIP1559 && {\n maxFeePerGas: toHexString(BigInt(maxFeePerGas?.toString() || \"0\")),\n maxPriorityFeePerGas: toHexString(BigInt(maxPriorityFeePerGas?.toString() || \"0\")),\n }),\n ...(!isEIP1559 && {\n // Fixed syntax error and structure here\n gasPrice: toHexString(BigInt(gasPrice?.toString() || \"0\")),\n }),\n };\n const responseSign = await this.sdk.eth.ethSignTransaction(input);\n return responseSign.serialized;\n };\n\n sendTransaction = async (tx: TransactionRequest): Promise<any> => {\n if (!this.provider) throw new SwapKitError(\"wallet_keepkey_no_provider\");\n\n const signedTxHex = await this.signTransaction(tx);\n\n return await this.provider.broadcastTransaction(signedTxHex);\n };\n\n connect = (provider: Provider) =>\n new KeepKeySigner({ chain: this.chain, derivationPath: this.derivationPath, provider, sdk: this.sdk });\n}\n",
|
|
8
8
|
"import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n type AssetValue,\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n type GenericTransferParams,\n getRPCUrl,\n MAYAConfig,\n SwapKitError,\n} from \"@swapkit/helpers\";\nimport type { ThorchainDepositParams } from \"@swapkit/toolboxes/cosmos\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\ntype SignTransactionParams = { assetValue: AssetValue; recipient?: string; sender: string; memo: string | undefined };\n\nexport async function mayachainWalletMethods({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}): Promise<any> {\n const { createStargateClient, getCosmosToolbox } = await import(\"@swapkit/toolboxes/cosmos\");\n\n const toolbox = await getCosmosToolbox(Chain.Maya);\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath.MAYA}/0`;\n\n const { address: fromAddress } = (await sdk.address.mayachainGetAddress({\n address_n: bip32ToAddressNList(derivationPathString),\n })) as { address: string };\n\n const signTransaction = async ({ assetValue, recipient, sender, memo }: SignTransactionParams) => {\n const importedAmino = await import(\"@cosmjs/amino\");\n const makeSignDoc = importedAmino.makeSignDoc ?? importedAmino.default?.makeSignDoc;\n const { getDenomWithChain } = await import(\"@swapkit/toolboxes/cosmos\");\n\n const account = await toolbox.getAccount(sender);\n if (!account) throw new SwapKitError(\"wallet_keepkey_account_not_found\");\n const { accountNumber, sequence = 0 } = account;\n const amount = assetValue.getBaseValue(\"string\");\n\n const isTransfer = recipient && recipient !== \"\";\n\n // TODO check if we can move to toolbox created msg\n const msg = isTransfer\n ? {\n type: \"mayachain/MsgSend\",\n value: {\n amount: [{ amount, denom: assetValue.symbol.toLowerCase() }],\n from_address: sender,\n to_address: recipient,\n },\n }\n : {\n type: \"mayachain/MsgDeposit\",\n value: { coins: [{ amount, asset: getDenomWithChain(assetValue) }], memo, signer: sender },\n };\n\n const signDoc = makeSignDoc(\n [msg],\n { amount: [], gas: \"500000000\" },\n MAYAConfig.chainId,\n memo,\n accountNumber?.toString(),\n sequence,\n );\n\n const sdkMethod = isTransfer ? sdk.mayachain.mayachainSignAminoTransfer : sdk.mayachain.mayachainSignAminoDeposit;\n\n // @ts-expect-error TC\n const signedTx = await sdkMethod({ signDoc, signerAddress: sender });\n const decodedBytes = atob(signedTx.serialized);\n return new Uint8Array(decodedBytes.length).map((_, i) => decodedBytes.charCodeAt(i));\n };\n\n const transfer = async ({ assetValue, recipient, memo }: GenericTransferParams) => {\n const rpcUrl = await getRPCUrl(Chain.Maya);\n const stargateClient = await createStargateClient(rpcUrl);\n const signedTransaction = await signTransaction({ assetValue, memo, recipient, sender: fromAddress });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n const deposit = async ({ assetValue, memo }: ThorchainDepositParams) => {\n const rpcUrl = await getRPCUrl(Chain.Maya);\n const stargateClient = await createStargateClient(rpcUrl);\n const signedTransaction = await signTransaction({ assetValue, memo, sender: fromAddress });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n return { ...toolbox, address: fromAddress, deposit, transfer };\n}\n",
|
|
9
9
|
"import type { KeepKeySdk, TypesThorchainSignDocDeposit, TypesThorchainSignDocTransfer } from \"@keepkey/keepkey-sdk\";\nimport {\n type AssetValue,\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n type GenericTransferParams,\n getRPCUrl,\n SwapKitError,\n THORConfig,\n} from \"@swapkit/helpers\";\nimport type { ThorchainDepositParams } from \"@swapkit/toolboxes/cosmos\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\ntype SignTransactionParams = { assetValue: AssetValue; recipient?: string; sender: string; memo: string | undefined };\n\nexport async function thorchainWalletMethods({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}): Promise<any> {\n const importedAmino = await import(\"@cosmjs/amino\");\n const makeSignDoc = importedAmino.makeSignDoc ?? importedAmino.default?.makeSignDoc;\n const { buildAminoMsg, getDefaultChainFee, createStargateClient, getCosmosToolbox } = await import(\n \"@swapkit/toolboxes/cosmos\"\n );\n\n const toolbox = await getCosmosToolbox(Chain.THORChain);\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath.THOR}/0`;\n\n const { address: fromAddress } = (await sdk.address.thorchainGetAddress({\n address_n: bip32ToAddressNList(derivationPathString),\n })) as { address: string };\n\n const signTransaction = async ({ assetValue, recipient, sender, memo }: SignTransactionParams) => {\n const account = await toolbox.getAccount(sender);\n if (!account) throw new SwapKitError(\"wallet_keepkey_account_not_found\");\n const { accountNumber, sequence = 0 } = account;\n\n const isTransfer = recipient && recipient !== \"\";\n const msg = buildAminoMsg({ assetValue, memo, recipient, sender });\n\n const signDoc = makeSignDoc(\n [msg],\n getDefaultChainFee(Chain.THORChain),\n THORConfig.chainId,\n memo,\n accountNumber?.toString(),\n sequence,\n );\n\n const signedTx = isTransfer\n ? await sdk.thorchain.thorchainSignAminoTransfer({\n signDoc: signDoc as TypesThorchainSignDocTransfer,\n signerAddress: sender,\n })\n : await sdk.thorchain.thorchainSignAminoDeposit({\n signDoc: signDoc as TypesThorchainSignDocDeposit,\n signerAddress: sender,\n });\n const decodedBytes = atob(signedTx.serialized);\n return new Uint8Array(decodedBytes.length).map((_, i) => decodedBytes.charCodeAt(i));\n };\n\n const transfer = async ({ assetValue, recipient, memo }: GenericTransferParams) => {\n const rpcUrl = await getRPCUrl(Chain.THORChain);\n const stargateClient = await createStargateClient(rpcUrl);\n const signedTransaction = await signTransaction({ assetValue, memo, recipient, sender: fromAddress });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n const deposit = async ({ assetValue, memo }: ThorchainDepositParams) => {\n const rpcUrl = await getRPCUrl(Chain.THORChain);\n const stargateClient = await createStargateClient(rpcUrl);\n const signedTransaction = await signTransaction({ assetValue, memo, sender: fromAddress });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n // const signMessage = async (message: string) => {\n // const stargateClient = await createStargateClient(RPCUrl.THORChain);\n // // return signedTx;\n // };\n\n return { ...toolbox, address: fromAddress, deposit, transfer };\n}\n",
|
|
10
|
-
"import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n FeeOption,\n type GenericTransferParams,\n SwapKitError,\n type UTXOChain,\n} from \"@swapkit/helpers\";\nimport {\n createHDWalletHelpers,\n getNetworkForChain,\n getUtxoApi,\n stripToCashAddress,\n type UTXOToolboxes,\n} from \"@swapkit/toolboxes/utxo\";\nimport type { Transaction } from \"@swapkit/utxo-signer\";\nimport { bip32ToAddressNList, ChainToKeepKeyName } from \"../coins\";\n\ninterface KeepKeyInputObject {\n addressNList: number[];\n scriptType: string;\n amount: string;\n vout: number;\n txid: string;\n hex: string;\n}\n\nexport async function utxoWalletMethods({\n sdk,\n chain,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n chain: Exclude<UTXOChain, typeof Chain.Zcash>;\n derivationPath?: DerivationPathArray;\n}) {\n const { getUtxoToolbox } = await import(\"@swapkit/toolboxes/utxo\");\n // This might not work for BCH\n const toolbox = await getUtxoToolbox(chain);\n const scriptType = [Chain.Bitcoin, Chain.Litecoin].includes(chain as typeof Chain.Bitcoin)\n ? (\"p2wpkh\" as const)\n : (\"p2pkh\" as const);\n\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath[chain]}/0`;\n\n const addressInfo = {\n address_n: bip32ToAddressNList(derivationPathString),\n coin: ChainToKeepKeyName[chain],\n script_type: scriptType,\n };\n\n const walletAddress: string = (await sdk.address.utxoGetAddress(addressInfo)).address;\n const network = getNetworkForChain(chain);\n\n const signTransaction = async (tx: Transaction, inputs: KeepKeyInputObject[], memo = \"\") => {\n const outputs: any[] = [];\n\n for (let i = 0; i < tx.outputsLength; i++) {\n const output = tx.getOutput(i);\n const address = tx.getOutputAddress(i, network);\n const value = Number(output.amount);\n\n if (address === walletAddress) {\n outputs.push({\n addressNList: addressInfo.address_n,\n addressType: \"change\",\n amount: value,\n isChange: true,\n scriptType,\n });\n } else if (address) {\n const outputAddress = chain === Chain.BitcoinCash ? stripToCashAddress(address) : address;\n\n if (outputAddress) {\n outputs.push({ address: outputAddress, addressType: \"spend\", amount: value });\n }\n }\n }\n\n const removeNullAndEmptyObjectsFromArray = (arr: any[]) => {\n return arr.filter((item) => item !== null && typeof item === \"object\" && Object.keys(item).length > 0);\n };\n\n const responseSign = await sdk.utxo.utxoSignTransaction({\n coin: ChainToKeepKeyName[chain],\n inputs,\n opReturnData: memo,\n outputs: removeNullAndEmptyObjectsFromArray(outputs),\n });\n\n return responseSign.serializedTx?.toString();\n };\n\n const transfer = async ({ recipient, feeOptionKey, feeRate, memo, ...rest }: GenericTransferParams) => {\n if (!walletAddress)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"From address must be provided\" });\n if (!recipient)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Recipient address must be provided\" });\n\n const createTxMethod =\n chain === Chain.BitcoinCash\n ? (toolbox as UTXOToolboxes[\"BCH\"]).buildTx\n : (toolbox as UTXOToolboxes[\"BTC\"]).createTransaction;\n\n const { tx, inputs: rawInputs } = await createTxMethod({\n ...rest,\n feeRate: feeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast],\n fetchTxHex: true,\n memo,\n recipient,\n sender: walletAddress,\n });\n\n const inputs = rawInputs.map(({ value, index, hash, txHex }) => ({\n //@TODO don't hardcode master, lookup on blockbook what input this is for and what path that address is!\n addressNList: addressInfo.address_n,\n amount: value.toString(),\n hex: txHex || \"\",\n scriptType,\n txid: hash,\n vout: index,\n }));\n\n const txHex = await signTransaction(tx, inputs, memo);\n return toolbox.broadcastTx(txHex);\n };\n\n const signTransactionWithMultipleInputs = async (\n tx: Transaction,\n inputs: Array<{\n hash: string;\n index: number;\n value: number;\n txHex?: string;\n derivationIndex: number;\n isChange: boolean;\n }>,\n memo = \"\",\n ) => {\n const accountAddressN = bip32ToAddressNList(\n derivationPath\n ? derivationPathToString(derivationPath.slice(0, 3) as DerivationPathArray)\n : DerivationPath[chain],\n );\n\n type KeepKeyOutput =\n | { addressNList: number[]; addressType: \"change\"; amount: number; isChange: true; scriptType: string }\n | { address: string; addressType: \"spend\"; amount: number };\n\n const outputs: KeepKeyOutput[] = [];\n for (let i = 0; i < tx.outputsLength; i++) {\n const output = tx.getOutput(i);\n const outputAddress = tx.getOutputAddress(i, network);\n const value = Number(output.amount);\n\n if (outputAddress === walletAddress) {\n outputs.push({\n addressNList: addressInfo.address_n,\n addressType: \"change\",\n amount: value,\n isChange: true,\n scriptType,\n });\n } else if (outputAddress) {\n const finalAddress = chain === Chain.BitcoinCash ? stripToCashAddress(outputAddress) : outputAddress;\n if (finalAddress) {\n outputs.push({ address: finalAddress, addressType: \"spend\", amount: value });\n }\n }\n }\n\n const keepKeyInputs = inputs.map(({ hash, index: inputIndex, value, txHex, derivationIndex, isChange }) => {\n const changePath = isChange ? 1 : 0;\n const inputAddressN = [...accountAddressN, changePath, derivationIndex];\n return {\n addressNList: inputAddressN,\n amount: value.toString(),\n hex: txHex || \"\",\n scriptType,\n txid: hash,\n vout: inputIndex,\n };\n });\n\n const responseSign = await sdk.utxo.utxoSignTransaction({\n coin: ChainToKeepKeyName[chain],\n inputs: keepKeyInputs,\n opReturnData: memo,\n outputs: outputs.filter((item) => item !== null && typeof item === \"object\" && Object.keys(item).length > 0),\n });\n\n return responseSign.serializedTx?.toString() || \"\";\n };\n\n const transferFromMultipleAddresses = async ({\n utxos,\n recipient,\n assetValue,\n memo,\n feeRate,\n feeOptionKey,\n }: {\n utxos: Array<{\n hash: string;\n index: number;\n value: number;\n txHex?: string;\n derivationIndex: number;\n isChange: boolean;\n address: string;\n }>;\n recipient: string;\n assetValue: { getBaseValue: (unit: string) => number; chain: string };\n memo?: string;\n feeRate?: number;\n feeOptionKey?: (typeof FeeOption)[keyof typeof FeeOption];\n }) => {\n const txFeeRate = feeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast];\n\n const createTxMethod =\n chain === Chain.BitcoinCash\n ? (toolbox as UTXOToolboxes[\"BCH\"]).buildTx\n : (toolbox as UTXOToolboxes[\"BTC\"]).createTransaction;\n\n const { tx, inputs: selectedInputs } = await createTxMethod({\n assetValue: assetValue as any,\n feeRate: txFeeRate,\n fetchTxHex: true,\n memo,\n recipient,\n sender: walletAddress,\n });\n\n const inputsWithDerivation = selectedInputs.map(\n (input: { hash: string; index: number; value: number; txHex?: string }) => {\n const utxoInfo = utxos.find((u) => u.hash === input.hash && u.index === input.index);\n return { ...input, derivationIndex: utxoInfo?.derivationIndex ?? 0, isChange: utxoInfo?.isChange ?? false };\n },\n );\n\n const signedTxHex = await signTransactionWithMultipleInputs(tx, inputsWithDerivation, memo);\n return toolbox.broadcastTx(signedTxHex);\n };\n\n const accountPathString = derivationPath\n ? derivationPathToString(derivationPath.slice(0, 3) as DerivationPathArray)\n : DerivationPath[chain].split(\"/\").slice(0, 4).join(\"/\");\n\n async function getExtendedPublicKey() {\n try {\n const path = {\n address_n: bip32ToAddressNList(accountPathString),\n coin: ChainToKeepKeyName[chain],\n script_type: scriptType,\n showDisplay: false,\n symbol: chain.toUpperCase(),\n };\n\n const responsePubkey = await sdk.system.info.getPublicKey(path);\n\n return { path: accountPathString, xpub: responsePubkey.xpub };\n } catch (error) {\n throw new SwapKitError(\"wallet_keepkey_failed_to_get_public_key\", {\n chain,\n error: error instanceof Error ? error.message : \"Unknown error\",\n });\n }\n }\n\n async function deriveAddressAtIndex({ index, change = false }: { index: number; change?: boolean }) {\n try {\n const fullPathString = `${accountPathString}/${Number(change)}/${index}`;\n\n const result = await sdk.address.utxoGetAddress({\n address_n: bip32ToAddressNList(fullPathString),\n coin: ChainToKeepKeyName[chain],\n script_type: scriptType,\n });\n\n let finalAddress = result.address;\n if (chain === Chain.BitcoinCash) {\n finalAddress = stripToCashAddress(result.address);\n }\n\n return { address: finalAddress, change, index, pubkey: \"\" };\n } catch {\n return undefined;\n }\n }\n\n const hdHelpers = createHDWalletHelpers({\n chain,\n deriveAddress: deriveAddressAtIndex,\n getBalance: toolbox.getBalance,\n getUtxos: (address: string) => getUtxoApi(chain).getUtxos({ address, fetchTxHex: true }),\n });\n\n return {\n ...toolbox,\n ...hdHelpers,\n address: walletAddress,\n deriveAddressAtIndex,\n getExtendedPublicKey,\n signTransaction,\n signTransactionWithMultipleInputs,\n transfer,\n transferFromMultipleAddresses,\n };\n}\n"
|
|
10
|
+
"import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n FeeOption,\n type GenericTransferParams,\n SwapKitError,\n type UTXOChain,\n} from \"@swapkit/helpers\";\nimport {\n assertDerivationIndex,\n createHDWalletHelpers,\n getNetworkForChain,\n getUTXOAccountIndexFromPath,\n getUTXOAccountPath,\n getUTXOAddressPath,\n getUtxoApi,\n stripToCashAddress,\n type UTXOToolboxes,\n} from \"@swapkit/toolboxes/utxo\";\nimport type { Transaction } from \"@swapkit/utxo-signer\";\nimport { bip32ToAddressNList, ChainToKeepKeyName } from \"../coins\";\n\ninterface KeepKeyInputObject {\n addressNList: number[];\n scriptType: string;\n amount: string;\n vout: number;\n txid: string;\n hex: string;\n}\n\nexport async function utxoWalletMethods({\n sdk,\n chain,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n chain: Exclude<UTXOChain, typeof Chain.Zcash>;\n derivationPath?: DerivationPathArray;\n}) {\n const { getUtxoToolbox } = await import(\"@swapkit/toolboxes/utxo\");\n // This might not work for BCH\n const toolbox = await getUtxoToolbox(chain);\n const scriptType = [Chain.Bitcoin, Chain.Litecoin].includes(chain as typeof Chain.Bitcoin)\n ? (\"p2wpkh\" as const)\n : (\"p2pkh\" as const);\n\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath[chain]}/0`;\n\n const addressInfo = {\n address_n: bip32ToAddressNList(derivationPathString),\n coin: ChainToKeepKeyName[chain],\n script_type: scriptType,\n };\n\n const walletAddress: string = (await sdk.address.utxoGetAddress(addressInfo)).address;\n const network = getNetworkForChain(chain);\n\n const signTransaction = async (tx: Transaction, inputs: KeepKeyInputObject[], memo = \"\") => {\n const outputs: any[] = [];\n\n for (let i = 0; i < tx.outputsLength; i++) {\n const output = tx.getOutput(i);\n const address = tx.getOutputAddress(i, network);\n const value = Number(output.amount);\n\n if (address === walletAddress) {\n outputs.push({\n addressNList: addressInfo.address_n,\n addressType: \"change\",\n amount: value,\n isChange: true,\n scriptType,\n });\n } else if (address) {\n const outputAddress = chain === Chain.BitcoinCash ? stripToCashAddress(address) : address;\n\n if (outputAddress) {\n outputs.push({ address: outputAddress, addressType: \"spend\", amount: value });\n }\n }\n }\n\n const removeNullAndEmptyObjectsFromArray = (arr: any[]) => {\n return arr.filter((item) => item !== null && typeof item === \"object\" && Object.keys(item).length > 0);\n };\n\n const responseSign = await sdk.utxo.utxoSignTransaction({\n coin: ChainToKeepKeyName[chain],\n inputs,\n opReturnData: memo,\n outputs: removeNullAndEmptyObjectsFromArray(outputs),\n });\n\n return responseSign.serializedTx?.toString();\n };\n\n const transfer = async ({ recipient, feeOptionKey, feeRate, memo, ...rest }: GenericTransferParams) => {\n if (!walletAddress)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"From address must be provided\" });\n if (!recipient)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Recipient address must be provided\" });\n\n const createTxMethod =\n chain === Chain.BitcoinCash\n ? (toolbox as UTXOToolboxes[\"BCH\"]).buildTx\n : (toolbox as UTXOToolboxes[\"BTC\"]).createTransaction;\n\n const { tx, inputs: rawInputs } = await createTxMethod({\n ...rest,\n feeRate: feeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast],\n fetchTxHex: true,\n memo,\n recipient,\n sender: walletAddress,\n });\n\n const inputs = rawInputs.map(({ value, index, hash, txHex }) => ({\n //@TODO don't hardcode master, lookup on blockbook what input this is for and what path that address is!\n addressNList: addressInfo.address_n,\n amount: value.toString(),\n hex: txHex || \"\",\n scriptType,\n txid: hash,\n vout: index,\n }));\n\n const txHex = await signTransaction(tx, inputs, memo);\n return toolbox.broadcastTx(txHex);\n };\n\n const signTransactionWithMultipleInputs = async (\n tx: Transaction,\n inputs: Array<{\n hash: string;\n index: number;\n value: number;\n txHex?: string;\n derivationIndex: number;\n isChange: boolean;\n }>,\n memo = \"\",\n ) => {\n const accountAddressN = bip32ToAddressNList(\n derivationPath\n ? derivationPathToString(derivationPath.slice(0, 3) as DerivationPathArray)\n : DerivationPath[chain],\n );\n\n type KeepKeyOutput =\n | { addressNList: number[]; addressType: \"change\"; amount: number; isChange: true; scriptType: string }\n | { address: string; addressType: \"spend\"; amount: number };\n\n const outputs: KeepKeyOutput[] = [];\n for (let i = 0; i < tx.outputsLength; i++) {\n const output = tx.getOutput(i);\n const outputAddress = tx.getOutputAddress(i, network);\n const value = Number(output.amount);\n\n if (outputAddress === walletAddress) {\n outputs.push({\n addressNList: addressInfo.address_n,\n addressType: \"change\",\n amount: value,\n isChange: true,\n scriptType,\n });\n } else if (outputAddress) {\n const finalAddress = chain === Chain.BitcoinCash ? stripToCashAddress(outputAddress) : outputAddress;\n if (finalAddress) {\n outputs.push({ address: finalAddress, addressType: \"spend\", amount: value });\n }\n }\n }\n\n const keepKeyInputs = inputs.map(({ hash, index: inputIndex, value, txHex, derivationIndex, isChange }) => {\n const changePath = isChange ? 1 : 0;\n const inputAddressN = [...accountAddressN, changePath, derivationIndex];\n return {\n addressNList: inputAddressN,\n amount: value.toString(),\n hex: txHex || \"\",\n scriptType,\n txid: hash,\n vout: inputIndex,\n };\n });\n\n const responseSign = await sdk.utxo.utxoSignTransaction({\n coin: ChainToKeepKeyName[chain],\n inputs: keepKeyInputs,\n opReturnData: memo,\n outputs: outputs.filter((item) => item !== null && typeof item === \"object\" && Object.keys(item).length > 0),\n });\n\n return responseSign.serializedTx?.toString() || \"\";\n };\n\n const transferFromMultipleAddresses = async ({\n utxos,\n recipient,\n assetValue,\n memo,\n feeRate,\n feeOptionKey,\n }: {\n utxos: Array<{\n hash: string;\n index: number;\n value: number;\n txHex?: string;\n derivationIndex: number;\n isChange: boolean;\n address: string;\n }>;\n recipient: string;\n assetValue: { getBaseValue: (unit: string) => number; chain: string };\n memo?: string;\n feeRate?: number;\n feeOptionKey?: (typeof FeeOption)[keyof typeof FeeOption];\n }) => {\n const txFeeRate = feeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast];\n\n const createTxMethod =\n chain === Chain.BitcoinCash\n ? (toolbox as UTXOToolboxes[\"BCH\"]).buildTx\n : (toolbox as UTXOToolboxes[\"BTC\"]).createTransaction;\n\n const { tx, inputs: selectedInputs } = await createTxMethod({\n assetValue: assetValue as any,\n feeRate: txFeeRate,\n fetchTxHex: true,\n memo,\n recipient,\n sender: walletAddress,\n });\n\n const inputsWithDerivation = selectedInputs.map(\n (input: { hash: string; index: number; value: number; txHex?: string }) => {\n const utxoInfo = utxos.find((u) => u.hash === input.hash && u.index === input.index);\n return { ...input, derivationIndex: utxoInfo?.derivationIndex ?? 0, isChange: utxoInfo?.isChange ?? false };\n },\n );\n\n const signedTxHex = await signTransactionWithMultipleInputs(tx, inputsWithDerivation, memo);\n return toolbox.broadcastTx(signedTxHex);\n };\n\n async function getExtendedPublicKeyInfo({ accountIndex }: { accountIndex?: number } = {}) {\n try {\n const resolvedAccountPath = getUTXOAccountPath({ accountIndex, chain, derivationPath });\n const resolvedAccountPathString = derivationPathToString(resolvedAccountPath);\n const path = {\n address_n: bip32ToAddressNList(resolvedAccountPathString),\n coin: ChainToKeepKeyName[chain],\n script_type: scriptType,\n showDisplay: false,\n symbol: chain.toUpperCase(),\n };\n\n const responsePubkey = await sdk.system.info.getPublicKey(path);\n\n return {\n accountIndex: getUTXOAccountIndexFromPath(resolvedAccountPath),\n path: resolvedAccountPathString,\n xpub: responsePubkey.xpub,\n };\n } catch (error) {\n throw new SwapKitError(\"wallet_keepkey_failed_to_get_public_key\", {\n chain,\n error: error instanceof Error ? error.message : \"Unknown error\",\n });\n }\n }\n\n function getExtendedPublicKey() {\n return getExtendedPublicKeyInfo();\n }\n\n async function deriveAddressAtIndex({\n accountIndex,\n index,\n change = false,\n }: {\n accountIndex?: number;\n index: number;\n change?: boolean;\n }) {\n try {\n assertDerivationIndex(\"index\", index);\n const fullPath = getUTXOAddressPath({ accountIndex, chain, change, derivationPath, index });\n const fullPathString = derivationPathToString(fullPath);\n\n const result = await sdk.address.utxoGetAddress({\n address_n: bip32ToAddressNList(fullPathString),\n coin: ChainToKeepKeyName[chain],\n script_type: scriptType,\n });\n\n let finalAddress = result.address;\n if (chain === Chain.BitcoinCash) {\n finalAddress = stripToCashAddress(result.address);\n }\n\n return {\n accountIndex: getUTXOAccountIndexFromPath(fullPath),\n address: finalAddress,\n change,\n index,\n path: fullPathString,\n pubkey: \"\",\n };\n } catch {\n return undefined;\n }\n }\n\n async function deriveAddresses({\n accountIndex,\n count,\n startIndex = 0,\n change = false,\n }: {\n accountIndex?: number;\n count: number;\n startIndex?: number;\n change?: boolean;\n }) {\n assertDerivationIndex(\"count\", count);\n assertDerivationIndex(\"startIndex\", startIndex);\n\n const addresses = await Promise.all(\n Array.from({ length: count }, (_, i) => deriveAddressAtIndex({ accountIndex, change, index: startIndex + i })),\n );\n\n return addresses.filter((address) => !!address);\n }\n\n const hdHelpers = createHDWalletHelpers({\n chain,\n deriveAddress: deriveAddressAtIndex,\n getBalance: toolbox.getBalance,\n getUtxos: (address: string) => getUtxoApi(chain).getUtxos({ address, fetchTxHex: true }),\n });\n\n return {\n ...toolbox,\n ...hdHelpers,\n address: walletAddress,\n deriveAddressAtIndex,\n deriveAddresses,\n getExtendedPublicKey,\n getExtendedPublicKeyInfo,\n signTransaction,\n signTransactionWithMultipleInputs,\n transfer,\n transferFromMultipleAddresses,\n };\n}\n"
|
|
11
11
|
],
|
|
12
|
-
"mappings": "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",
|
|
13
|
-
"debugId": "
|
|
12
|
+
"mappings": "8FAAA,gBAAS,8BACT,gBACE,2BAEA,4BACA,eACA,kBACA,mBACA,0BAKF,uBAAS,+BAAc,8BCXvB,gBACE,oBACA,6BAEA,iBACA,eACA,0BAKF,eAAsB,CAAmB,EACvC,MACA,kBAIe,CACf,IAAQ,6BAA4B,mBAAkB,wBAAuB,wBAAyB,KACpG,qCAEI,EAAuB,EAAiB,GAAuB,CAAc,EAAI,GAAG,GAAe,UAEjG,QAAS,GAAiB,MAAM,EAAI,QAAQ,iBAAiB,CACnE,UAAW,EAAoB,CAAoB,CACrD,CAAC,EAEK,EAAU,MAAM,EAAiB,EAAM,MAAM,EAEnD,GAAI,EAA2B,OAAO,GACpC,EAA2B,OAAO,GAAG,OAAS,OAAO,MAAM,EAAsB,EAAW,QAAS,GAAG,CAAC,EAmC3G,MAAO,IAAK,EAAS,QAAS,EAAa,SA/B1B,OAAS,aAAY,YAAW,UAAkC,CACjF,IAAM,EAAS,EAAW,aAAa,QAAQ,EACzC,EAAc,MAAM,EAAQ,WAAW,CAAW,EAElD,EAAkB,MAAM,EAAI,OAAO,gBAAgB,CACvD,QAAS,CACP,eAAgB,GAAa,cAAc,SAAS,GAAK,GACzD,SAAU,EAAW,QACrB,IAAK,EACL,KAAM,GAAQ,GACd,KAAM,CACJ,CACE,KAAM,qBACN,MAAO,CAAE,OAAQ,CAAC,CAAE,SAAQ,MAAO,OAAQ,CAAC,EAAG,aAAc,EAAa,WAAY,CAAU,CAClG,CACF,EACA,SAAU,GAAa,SAAS,SAAS,GAAK,EAChD,EACA,cAAe,CACjB,CAAC,EAEK,EAAe,KAAK,EAAgB,UAAU,EAC9C,EAAa,IAAI,WAAW,EAAa,MAAM,EAAE,IAAI,CAAC,EAAG,IAAM,EAAa,WAAW,CAAC,CAAC,EAEzF,EAAS,MAAM,GAAU,EAAM,MAAM,EAI3C,OAFiB,MADF,MAAM,EAAqB,CAAM,GAClB,YAAY,CAAU,GAEpC,gBAGkC,EClEtD,yBAEE,6BAEA,4BACA,mBACA,yBAGF,yBAAS,gBAWF,MAAM,UAAsB,EAAe,CACxC,IACA,MACA,eACA,QACC,SAET,WAAW,EAAG,MAAK,QAAO,iBAAgB,YAAoC,CAC5E,MAAM,EACN,KAAK,IAAM,EACX,KAAK,MAAQ,EACb,KAAK,eAAiB,GAAkB,GAAsB,IAC9D,KAAK,QAAU,GACf,KAAK,SAAW,EAGlB,cAAgB,MACd,EACA,EACA,EACA,IACG,CACH,IAAQ,yBAA0B,KAAa,mCACvC,oBAAqB,KAAa,mBAElC,aAAc,KAAM,GAAkB,EACxC,EAAc,GAAuB,EAAiB,KAAK,CAAa,EAAE,YAC1E,EAAc,EAAsB,CAAM,EAE1C,EAAU,MAAM,KAAK,WAAW,EAChC,EAAS,MAAM,KAAK,IAAI,IAAI,iBAAiB,CACjD,UACA,UAAW,CACT,OAAQ,EACR,QAAS,EACT,cACA,MAAO,CAAE,aAAc,KAAgB,CAAc,CACvD,CACF,CAAC,EAED,GAAI,OAAO,IAAW,SACpB,MAAM,IAAI,EAAa,sCAAuC,CAAE,OAAQ,eAAgB,CAAC,EAG3F,OAAO,EAAO,WAAW,IAAI,EAAI,EAAS,KAAK,KAGjD,WAAa,SAAY,CACvB,GAAI,KAAK,QAAS,OAAO,KAAK,QAC9B,IAAQ,WAAY,MAAM,KAAK,IAAI,QAAQ,mBAAmB,CAC5D,UAAW,EAAoB,GAAuB,KAAK,cAAc,CAAC,CAC5E,CAAC,EAGD,OADA,KAAK,QAAU,EACR,GAGT,YAAc,CAAC,IAAoB,KAAK,IAAI,IAAI,QAAQ,CAAE,QAAS,KAAK,QAAS,SAAQ,CAAC,EAE1F,gBAAkB,OAChB,KACA,QACA,WACA,QACA,OACA,eACA,uBACA,cACwB,CACxB,GAAI,CAAC,EAAI,MAAM,IAAI,EAAa,gCAAiC,CAAE,OAAQ,oBAAqB,CAAC,EACjG,GAAI,CAAC,EAAU,MAAM,IAAI,EAAa,gCAAiC,CAAE,OAAQ,kBAAmB,CAAC,EACrG,GAAI,CAAC,EAAM,MAAM,IAAI,EAAa,gCAAiC,CAAE,OAAQ,cAAe,CAAC,EAE7F,IAAM,EAAY,CAAC,GAAG,GAAgB,IAAyB,CAAC,GAChE,GAAI,GAAa,CAAC,EAChB,MAAM,IAAI,EAAa,gCAAiC,CAAE,OAAQ,sBAAuB,CAAC,EAC5F,GAAI,GAAa,CAAC,EAChB,MAAM,IAAI,EAAa,gCAAiC,CAAE,OAAQ,8BAA+B,CAAC,EACpG,GAAI,EAAE,GAAa,GACjB,MAAM,IAAI,EAAa,gCAAiC,CAAE,OAAQ,kBAAmB,CAAC,EAExF,IAAQ,eAAgB,KAAa,kCAE/B,EAAa,EACf,OAAO,CAAK,EACZ,OAAO,MAAM,KAAK,SAAS,oBAAoB,MAAM,KAAK,WAAW,EAAG,SAAS,CAAC,EAEhF,EAAQ,CACZ,aAAc,CAAC,WAAY,WAAY,WAAY,EAAG,CAAC,EACvD,QAAS,EAAY,OAAO,GAAe,KAAK,MAAM,CAAC,EACvD,OACA,KAAM,KAAK,QACX,IAAK,EAAY,OAAO,CAAQ,CAAC,EACjC,MAAO,EAAY,CAAU,EAC7B,GAAI,EAAG,SAAS,EAChB,MAAO,EAAY,OAAO,GAAS,CAAC,CAAC,KACjC,GAAa,CACf,aAAc,EAAY,OAAO,GAAc,SAAS,GAAK,GAAG,CAAC,EACjE,qBAAsB,EAAY,OAAO,GAAsB,SAAS,GAAK,GAAG,CAAC,CACnF,KACI,CAAC,GAAa,CAEhB,SAAU,EAAY,OAAO,GAAU,SAAS,GAAK,GAAG,CAAC,CAC3D,CACF,EAEA,OADqB,MAAM,KAAK,IAAI,IAAI,mBAAmB,CAAK,GAC5C,YAGtB,gBAAkB,MAAO,IAAyC,CAChE,GAAI,CAAC,KAAK,SAAU,MAAM,IAAI,EAAa,4BAA4B,EAEvE,IAAM,EAAc,MAAM,KAAK,gBAAgB,CAAE,EAEjD,OAAO,MAAM,KAAK,SAAS,qBAAqB,CAAW,GAG7D,QAAU,CAAC,IACT,IAAI,EAAc,CAAE,MAAO,KAAK,MAAO,eAAgB,KAAK,eAAgB,WAAU,IAAK,KAAK,GAAI,CAAC,CACzG,CC3IA,gBAEE,oBACA,6BAEA,gBAEA,gBACA,mBACA,0BAQF,eAAsB,CAAsB,EAC1C,MACA,kBAIe,CACf,IAAQ,uBAAsB,oBAAqB,KAAa,qCAE1D,EAAU,MAAM,EAAiB,EAAM,IAAI,EAC3C,EAAuB,EAAiB,GAAuB,CAAc,EAAI,GAAG,GAAe,UAEjG,QAAS,GAAiB,MAAM,EAAI,QAAQ,oBAAoB,CACtE,UAAW,EAAoB,CAAoB,CACrD,CAAC,EAEK,EAAkB,OAAS,aAAY,YAAW,SAAQ,UAAkC,CAChG,IAAM,EAAgB,KAAa,yBAC7B,EAAc,EAAc,aAAe,EAAc,SAAS,aAChE,qBAAsB,KAAa,qCAErC,EAAU,MAAM,EAAQ,WAAW,CAAM,EAC/C,GAAI,CAAC,EAAS,MAAM,IAAI,GAAa,kCAAkC,EACvE,IAAQ,gBAAe,WAAW,GAAM,EAClC,EAAS,EAAW,aAAa,QAAQ,EAEzC,EAAa,GAAa,IAAc,GAGxC,EAAM,EACR,CACE,KAAM,oBACN,MAAO,CACL,OAAQ,CAAC,CAAE,SAAQ,MAAO,EAAW,OAAO,YAAY,CAAE,CAAC,EAC3D,aAAc,EACd,WAAY,CACd,CACF,EACA,CACE,KAAM,uBACN,MAAO,CAAE,MAAO,CAAC,CAAE,SAAQ,MAAO,EAAkB,CAAU,CAAE,CAAC,EAAG,OAAM,OAAQ,CAAO,CAC3F,EAEE,EAAU,EACd,CAAC,CAAG,EACJ,CAAE,OAAQ,CAAC,EAAG,IAAK,WAAY,EAC/B,GAAW,QACX,EACA,GAAe,SAAS,EACxB,CACF,EAKM,EAAW,MAHC,EAAa,EAAI,UAAU,2BAA6B,EAAI,UAAU,2BAGvD,CAAE,UAAS,cAAe,CAAO,CAAC,EAC7D,EAAe,KAAK,EAAS,UAAU,EAC7C,OAAO,IAAI,WAAW,EAAa,MAAM,EAAE,IAAI,CAAC,EAAG,IAAM,EAAa,WAAW,CAAC,CAAC,GAqBrF,MAAO,IAAK,EAAS,QAAS,EAAa,QAT3B,OAAS,aAAY,UAAmC,CACtE,IAAM,EAAS,MAAM,EAAU,EAAM,IAAI,EACnC,EAAiB,MAAM,EAAqB,CAAM,EAClD,EAAoB,MAAM,EAAgB,CAAE,aAAY,OAAM,OAAQ,CAAY,CAAC,GACjF,mBAAoB,MAAM,EAAe,YAAY,CAAiB,EAE9E,OAAO,GAG2C,SAlBnC,OAAS,aAAY,YAAW,UAAkC,CACjF,IAAM,EAAS,MAAM,EAAU,EAAM,IAAI,EACnC,EAAiB,MAAM,EAAqB,CAAM,EAClD,EAAoB,MAAM,EAAgB,CAAE,aAAY,OAAM,YAAW,OAAQ,CAAY,CAAC,GAC5F,mBAAoB,MAAM,EAAe,YAAY,CAAiB,EAE9E,OAAO,EAYoD,EC/F/D,gBAEE,oBACA,6BAEA,gBAEA,kBACA,iBACA,0BAQF,eAAsB,EAAsB,EAC1C,MACA,kBAIe,CACf,IAAM,EAAgB,KAAa,yBAC7B,EAAc,EAAc,aAAe,EAAc,SAAS,aAChE,gBAAe,qBAAoB,uBAAsB,oBAAqB,KACpF,qCAGI,EAAU,MAAM,EAAiB,EAAM,SAAS,EAChD,EAAuB,EAAiB,GAAuB,CAAc,EAAI,GAAG,GAAe,UAEjG,QAAS,GAAiB,MAAM,EAAI,QAAQ,oBAAoB,CACtE,UAAW,EAAoB,CAAoB,CACrD,CAAC,EAEK,EAAkB,OAAS,aAAY,YAAW,SAAQ,UAAkC,CAChG,IAAM,EAAU,MAAM,EAAQ,WAAW,CAAM,EAC/C,GAAI,CAAC,EAAS,MAAM,IAAI,GAAa,kCAAkC,EACvE,IAAQ,gBAAe,WAAW,GAAM,EAElC,EAAa,GAAa,IAAc,GACxC,EAAM,EAAc,CAAE,aAAY,OAAM,YAAW,QAAO,CAAC,EAE3D,EAAU,EACd,CAAC,CAAG,EACJ,EAAmB,EAAM,SAAS,EAClC,GAAW,QACX,EACA,GAAe,SAAS,EACxB,CACF,EAEM,EAAW,EACb,MAAM,EAAI,UAAU,2BAA2B,CAC7C,QAAS,EACT,cAAe,CACjB,CAAC,EACD,MAAM,EAAI,UAAU,0BAA0B,CAC5C,QAAS,EACT,cAAe,CACjB,CAAC,EACC,EAAe,KAAK,EAAS,UAAU,EAC7C,OAAO,IAAI,WAAW,EAAa,MAAM,EAAE,IAAI,CAAC,EAAG,IAAM,EAAa,WAAW,CAAC,CAAC,GA0BrF,MAAO,IAAK,EAAS,QAAS,EAAa,QAd3B,OAAS,aAAY,UAAmC,CACtE,IAAM,EAAS,MAAM,EAAU,EAAM,SAAS,EACxC,EAAiB,MAAM,EAAqB,CAAM,EAClD,EAAoB,MAAM,EAAgB,CAAE,aAAY,OAAM,OAAQ,CAAY,CAAC,GACjF,mBAAoB,MAAM,EAAe,YAAY,CAAiB,EAE9E,OAAO,GAQ2C,SAvBnC,OAAS,aAAY,YAAW,UAAkC,CACjF,IAAM,EAAS,MAAM,EAAU,EAAM,SAAS,EACxC,EAAiB,MAAM,EAAqB,CAAM,EAClD,EAAoB,MAAM,EAAgB,CAAE,aAAY,OAAM,YAAW,OAAQ,CAAY,CAAC,GAC5F,mBAAoB,MAAM,EAAe,YAAY,CAAiB,EAE9E,OAAO,EAiBoD,EC1F/D,gBACE,oBACA,6BAEA,eACA,mBAEA,yBAGF,gCACE,2BACA,yBACA,kCACA,yBACA,yBACA,iBACA,yBACA,gCAeF,eAAsB,EAAiB,EACrC,MACA,QACA,kBAKC,CACD,IAAQ,kBAAmB,KAAa,mCAElC,EAAU,MAAM,EAAe,CAAK,EACpC,EAAa,CAAC,EAAM,QAAS,EAAM,QAAQ,EAAE,SAAS,CAA6B,EACpF,SACA,QAEC,EAAuB,EAAiB,EAAuB,CAAc,EAAI,GAAG,GAAe,OAEnG,EAAc,CAClB,UAAW,EAAoB,CAAoB,EACnD,KAAM,EAAmB,GACzB,YAAa,CACf,EAEM,GAAyB,MAAM,EAAI,QAAQ,eAAe,CAAW,GAAG,QACxE,EAAU,GAAmB,CAAK,EAElC,EAAkB,MAAO,EAAiB,EAA8B,EAAO,KAAO,CAC1F,IAAM,EAAiB,CAAC,EAExB,QAAS,EAAI,EAAG,EAAI,EAAG,cAAe,IAAK,CACzC,IAAM,EAAS,EAAG,UAAU,CAAC,EACvB,EAAU,EAAG,iBAAiB,EAAG,CAAO,EACxC,EAAQ,OAAO,EAAO,MAAM,EAElC,GAAI,IAAY,EACd,EAAQ,KAAK,CACX,aAAc,EAAY,UAC1B,YAAa,SACb,OAAQ,EACR,SAAU,GACV,YACF,CAAC,EACI,QAAI,EAAS,CAClB,IAAM,EAAgB,IAAU,EAAM,YAAc,EAAmB,CAAO,EAAI,EAElF,GAAI,EACF,EAAQ,KAAK,CAAE,QAAS,EAAe,YAAa,QAAS,OAAQ,CAAM,CAAC,GAKlF,IAAM,EAAqC,CAAC,IAAe,CACzD,OAAO,EAAI,OAAO,CAAC,IAAS,IAAS,MAAQ,OAAO,IAAS,UAAY,OAAO,KAAK,CAAI,EAAE,OAAS,CAAC,GAUvG,OAPqB,MAAM,EAAI,KAAK,oBAAoB,CACtD,KAAM,EAAmB,GACzB,SACA,aAAc,EACd,QAAS,EAAmC,CAAO,CACrD,CAAC,GAEmB,cAAc,SAAS,GAGvC,EAAW,OAAS,YAAW,eAAc,UAAS,UAAS,KAAkC,CACrG,GAAI,CAAC,EACH,MAAM,IAAI,EAAa,gCAAiC,CAAE,OAAQ,+BAAgC,CAAC,EACrG,GAAI,CAAC,EACH,MAAM,IAAI,EAAa,gCAAiC,CAAE,OAAQ,oCAAqC,CAAC,EAE1G,IAAM,EACJ,IAAU,EAAM,YACX,EAAiC,QACjC,EAAiC,mBAEhC,KAAI,OAAQ,GAAc,MAAM,EAAe,IAClD,EACH,QAAS,IAAY,MAAM,EAAQ,YAAY,GAAG,GAAgB,GAAU,MAC5E,WAAY,GACZ,OACA,YACA,OAAQ,CACV,CAAC,EAEK,EAAS,EAAU,IAAI,EAAG,QAAO,QAAO,OAAM,YAAa,CAE/D,aAAc,EAAY,UAC1B,OAAQ,EAAM,SAAS,EACvB,IAAK,GAAS,GACd,aACA,KAAM,EACN,KAAM,CACR,EAAE,EAEI,EAAQ,MAAM,EAAgB,EAAI,EAAQ,CAAI,EACpD,OAAO,EAAQ,YAAY,CAAK,GAG5B,EAAoC,MACxC,EACA,EAQA,EAAO,KACJ,CACH,IAAM,EAAkB,EACtB,EACI,EAAuB,EAAe,MAAM,EAAG,CAAC,CAAwB,EACxE,GAAe,EACrB,EAMM,EAA2B,CAAC,EAClC,QAAS,EAAI,EAAG,EAAI,EAAG,cAAe,IAAK,CACzC,IAAM,EAAS,EAAG,UAAU,CAAC,EACvB,EAAgB,EAAG,iBAAiB,EAAG,CAAO,EAC9C,EAAQ,OAAO,EAAO,MAAM,EAElC,GAAI,IAAkB,EACpB,EAAQ,KAAK,CACX,aAAc,EAAY,UAC1B,YAAa,SACb,OAAQ,EACR,SAAU,GACV,YACF,CAAC,EACI,QAAI,EAAe,CACxB,IAAM,EAAe,IAAU,EAAM,YAAc,EAAmB,CAAa,EAAI,EACvF,GAAI,EACF,EAAQ,KAAK,CAAE,QAAS,EAAc,YAAa,QAAS,OAAQ,CAAM,CAAC,GAKjF,IAAM,EAAgB,EAAO,IAAI,EAAG,OAAM,MAAO,EAAY,QAAO,QAAO,kBAAiB,cAAe,CACzG,IAAM,EAAa,EAAW,EAAI,EAElC,MAAO,CACL,aAFoB,CAAC,GAAG,EAAiB,EAAY,CAAe,EAGpE,OAAQ,EAAM,SAAS,EACvB,IAAK,GAAS,GACd,aACA,KAAM,EACN,KAAM,CACR,EACD,EASD,OAPqB,MAAM,EAAI,KAAK,oBAAoB,CACtD,KAAM,EAAmB,GACzB,OAAQ,EACR,aAAc,EACd,QAAS,EAAQ,OAAO,CAAC,IAAS,IAAS,MAAQ,OAAO,IAAS,UAAY,OAAO,KAAK,CAAI,EAAE,OAAS,CAAC,CAC7G,CAAC,GAEmB,cAAc,SAAS,GAAK,IAG5C,EAAgC,OACpC,QACA,YACA,aACA,OACA,UACA,kBAgBI,CACJ,IAAM,EAAY,IAAY,MAAM,EAAQ,YAAY,GAAG,GAAgB,GAAU,MAE/E,EACJ,IAAU,EAAM,YACX,EAAiC,QACjC,EAAiC,mBAEhC,KAAI,OAAQ,GAAmB,MAAM,EAAe,CAC1D,WAAY,EACZ,QAAS,EACT,WAAY,GACZ,OACA,YACA,OAAQ,CACV,CAAC,EAEK,EAAuB,EAAe,IAC1C,CAAC,IAA0E,CACzE,IAAM,EAAW,EAAM,KAAK,CAAC,IAAM,EAAE,OAAS,EAAM,MAAQ,EAAE,QAAU,EAAM,KAAK,EACnF,MAAO,IAAK,EAAO,gBAAiB,GAAU,iBAAmB,EAAG,SAAU,GAAU,UAAY,EAAM,EAE9G,EAEM,EAAc,MAAM,EAAkC,EAAI,EAAsB,CAAI,EAC1F,OAAO,EAAQ,YAAY,CAAW,GAGxC,eAAe,CAAwB,EAAG,gBAA4C,CAAC,EAAG,CACxF,GAAI,CACF,IAAM,EAAsB,GAAmB,CAAE,eAAc,QAAO,gBAAe,CAAC,EAChF,EAA4B,EAAuB,CAAmB,EACtE,EAAO,CACX,UAAW,EAAoB,CAAyB,EACxD,KAAM,EAAmB,GACzB,YAAa,EACb,YAAa,GACb,OAAQ,EAAM,YAAY,CAC5B,EAEM,EAAiB,MAAM,EAAI,OAAO,KAAK,aAAa,CAAI,EAE9D,MAAO,CACL,aAAc,GAA4B,CAAmB,EAC7D,KAAM,EACN,KAAM,EAAe,IACvB,EACA,MAAO,EAAO,CACd,MAAM,IAAI,EAAa,0CAA2C,CAChE,QACA,MAAO,aAAiB,MAAQ,EAAM,QAAU,eAClD,CAAC,GAIL,SAAS,CAAoB,EAAG,CAC9B,OAAO,EAAyB,EAGlC,eAAe,CAAoB,EACjC,eACA,QACA,SAAS,IAKR,CACD,GAAI,CACF,EAAsB,QAAS,CAAK,EACpC,IAAM,EAAW,GAAmB,CAAE,eAAc,QAAO,SAAQ,iBAAgB,OAAM,CAAC,EACpF,EAAiB,EAAuB,CAAQ,EAEhD,EAAS,MAAM,EAAI,QAAQ,eAAe,CAC9C,UAAW,EAAoB,CAAc,EAC7C,KAAM,EAAmB,GACzB,YAAa,CACf,CAAC,EAEG,EAAe,EAAO,QAC1B,GAAI,IAAU,EAAM,YAClB,EAAe,EAAmB,EAAO,OAAO,EAGlD,MAAO,CACL,aAAc,GAA4B,CAAQ,EAClD,QAAS,EACT,SACA,QACA,KAAM,EACN,OAAQ,EACV,EACA,KAAM,CACN,QAIJ,eAAe,CAAe,EAC5B,eACA,QACA,aAAa,EACb,SAAS,IAMR,CAQD,OAPA,EAAsB,QAAS,CAAK,EACpC,EAAsB,aAAc,CAAU,GAE5B,MAAM,QAAQ,IAC9B,MAAM,KAAK,CAAE,OAAQ,CAAM,EAAG,CAAC,EAAG,IAAM,EAAqB,CAAE,eAAc,SAAQ,MAAO,EAAa,CAAE,CAAC,CAAC,CAC/G,GAEiB,OAAO,CAAC,IAAY,CAAC,CAAC,CAAO,EAGhD,IAAM,EAAY,GAAsB,CACtC,QACA,cAAe,EACf,WAAY,EAAQ,WACpB,SAAU,CAAC,IAAoB,GAAW,CAAK,EAAE,SAAS,CAAE,UAAS,WAAY,EAAK,CAAC,CACzF,CAAC,EAED,MAAO,IACF,KACA,EACH,QAAS,EACT,uBACA,kBACA,uBACA,2BACA,kBACA,oCACA,WACA,+BACF,ELpVK,IAAM,GAAgB,GAAa,CACxC,QAAS,EAAG,WAAU,kBAAiB,gBACrC,cAA6B,CAAC,EAAiB,EAAwD,CACrG,IAAM,EAAiB,GAAsB,CAAE,SAAQ,kBAAiB,YAAW,CAAC,EAC9E,EAAc,EAAS,IAAI,cAAc,EAAE,QACjD,GAAI,CAAC,EAAa,MAAU,MAAM,0BAA0B,EAE5D,IAAM,EAAgB,EAAS,IAAI,SAAS,EAAE,SAAW,OAEzD,MAAM,GAAe,EAGrB,IAAM,EAAgB,CAAE,OAAQ,EAAe,aAAY,EACrD,EAAa,MAAM,GAAW,OAAO,CAAa,EAGxD,GAAI,EAAc,QAAU,EAAc,SAAW,EACnD,EAAS,UAAU,UAAW,EAAc,MAAM,EAepD,OAZA,MAAM,QAAQ,IACZ,EAAe,IAAI,MAAO,IAAU,CAClC,IAAM,EAAgB,MAAM,GAAiB,CAC3C,QACA,eAAgB,IAAoB,IAAU,GAAsB,GACpE,IAAK,CACP,CAAC,EACK,EAAW,MAAM,EAAc,WAAW,GAAM,GAEtD,EAAS,IAAK,EAAe,UAAS,QAAO,WAAY,GAAa,OAAQ,CAAC,EAChF,CACH,EACO,IAEX,qBAAsB,EACnB,EAAM,UAAW,IACjB,EAAM,WAAY,IAClB,EAAM,MAAO,IACb,EAAM,WAAY,IAClB,EAAM,mBAAoB,IAC1B,EAAM,UAAW,IACjB,EAAM,QAAS,IACf,EAAM,OAAQ,IACd,EAAM,UAAW,IACjB,EAAM,SAAU,IAChB,EAAM,QAAS,IACf,EAAM,QAAS,EAElB,EACA,KAAM,iBACN,gBAAiB,CACf,EAAM,SACN,EAAM,UACN,EAAM,KACN,EAAM,UACN,EAAM,kBACN,EAAM,QACN,EAAM,YACN,EAAM,OACN,EAAM,SACN,EAAM,KACN,EAAM,SACN,EAAM,OACN,EAAM,SACN,EAAM,MACN,EAAM,OACN,EAAM,SACN,EAAM,QACN,EAAM,UACN,EAAM,KACN,EAAM,MACR,EACA,WAAY,GAAa,OAC3B,CAAC,EAEY,GAA2B,GAAyB,EAAa,EAE9E,eAAe,EAAgB,EAC7B,MACA,QACA,kBAKC,CACD,IAAQ,cAAa,sBAAuB,KAAa,kCAEzD,OAAQ,QACD,EAAM,uBACN,EAAM,cACN,EAAM,eACN,EAAM,cACN,EAAM,aACN,EAAM,eACN,EAAM,UACN,EAAM,cACN,EAAM,YACN,EAAM,WACN,EAAM,OAAQ,CACjB,IAAM,EAAW,MAAM,EAAY,CAAK,EAClC,EAAS,IAAI,EAAc,CAAE,QAAO,iBAAgB,WAAU,KAAI,CAAC,EAGzE,OAFgB,MAAM,EAAmB,EAAO,CAAE,WAAU,QAAO,CAAC,CAGtE,MACK,EAAM,OACT,OAAO,EAAoB,CAAE,iBAAgB,KAAI,CAAC,OAE/C,EAAM,UACT,OAAO,GAAuB,CAAE,iBAAgB,KAAI,CAAC,OAElD,EAAM,KACT,OAAO,EAAuB,CAAE,iBAAgB,KAAI,CAAC,OAElD,EAAM,aACN,EAAM,iBACN,EAAM,UACN,EAAM,cACN,EAAM,SACT,OAAO,GAAkB,CAAE,QAAO,iBAAgB,KAAI,CAAC,OAEpD,EAAM,OAAQ,CACjB,IAAQ,uBAAwB,KAAa,gCAC7C,OAAO,EAAoB,CAAE,iBAAgB,KAAI,CAAC,CACpD,SAEE,MAAM,IAAI,GAAa,qCAAsC,CAAE,OAAM,CAAC,GAM5E,eAAe,EAAc,CAAC,EAAW,EAAG,CAC1C,GAAI,GAAY,EACd,MAAM,2FAA2F,EAInG,GAAI,CAFgB,MAAM,GAAyB,EAGjD,OAAO,SAAS,OAAO,kBAAkB,EACzC,MAAM,IAAI,QAAQ,CAAC,IAAY,WAAW,EAAS,KAAK,CAAC,EACzD,MAAM,GAAe,EAAW,CAAC,EAIrC,eAAe,EAAwB,CAAC,EAAO,0CAA2C,CACxF,GAAI,CAEF,OADiB,MAAM,MAAM,CAAI,GACjB,SAAW,IAC3B,KAAM,CACN,MAAO",
|
|
13
|
+
"debugId": "F566CD3DEF093ACA64756E2164756E21",
|
|
14
14
|
"names": []
|
|
15
15
|
}
|
package/dist/ledger/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var S0={};D0(S0,{ledgerWallet:()=>O0,LEDGER_SUPPORTED_CHAINS:()=>f0});module.exports=H0(S0);var T=require("@swapkit/helpers"),l=require("@swapkit/toolboxes/utxo"),NL=require("@swapkit/wallet-core");var C=require("@swapkit/helpers"),g=async({chain:L,ledgerClient:_})=>{if(!_)return"";switch(L){case C.Chain.Cosmos:case C.Chain.THORChain:return _.connect();case C.Chain.Ethereum:case C.Chain.BinanceSmartChain:case C.Chain.Avalanche:case C.Chain.Polygon:case C.Chain.Arbitrum:case C.Chain.Berachain:case C.Chain.Optimism:case C.Chain.Base:case C.Chain.Aurora:case C.Chain.Gnosis:case C.Chain.Monad:case C.Chain.XLayer:return _.getAddress();case C.Chain.Bitcoin:case C.Chain.BitcoinCash:case C.Chain.Dash:case C.Chain.Dogecoin:case C.Chain.Litecoin:case C.Chain.Zcash:{let y=_;await y.connect();let m=await y.getAddress();return L===C.Chain.BitcoinCash?m.replace("bitcoincash:",""):m}case C.Chain.Near:return await _.getAddress();case C.Chain.Ripple:return _.getAddress();case C.Chain.Tron:return _.getAddress();case C.Chain.Sui:return _.connect();default:throw new C.SwapKitError("wallet_chain_not_supported",{chain:L,wallet:C.WalletOption.LEDGER})}};var j=require("@swapkit/helpers");var x=require("@swapkit/helpers");var K=require("@swapkit/helpers");var ZL=require("@swapkit/helpers");var o=85,AL=250;var v={GET_ADDR_SECP256K1:4,GET_VERSION:0,INS_PUBLIC_KEY_SECP256K1:1,SIGN_SECP256K1:2},XL={ADD:1,INIT:0,LAST:2},CL={ONLY_RETRIEVE:0,SHOW_ADDRESS_IN_DEVICE:1},n={JSON:0},I={NoError:36864},DL={1:"U2F: Unknown",2:"U2F: Bad request",3:"U2F: Configuration unsupported",4:"U2F: Device Ineligible",5:"U2F: Timeout",14:"Timeout",25600:"Execution Error",26368:"Wrong Length",26626:"Error deriving keys",27010:"Empty Buffer",27011:"Output buffer too small",27012:"Data is invalid",27013:"Conditions not satisfied",27014:"Transaction rejected",27264:"Bad key handle",27392:"Invalid P1/P2",27904:"Instruction not supported",28160:"App does not seem to be open",28416:"Unknown error",28417:"Sign/verify error",36864:"No errors",36865:"Device is busy"};function S(L){if(L in DL)return DL[L];return`Unknown Status Code: ${L}`}function C0(L){return typeof L==="object"&&L!==null&&!Array.isArray(L)&&!(L instanceof Date)}function f(L){if(L){if(C0(L)){if(Object.hasOwn(L,"statusCode"))return{error_message:S(L.statusCode),return_code:L.statusCode};if(Object.hasOwn(L,"return_code")&&Object.hasOwn(L,"error_message"))return L}return{error_message:L.toString(),return_code:65535}}return{error_message:L.toString(),return_code:65535}}function $L(L){return L.send(85,v.GET_VERSION,0,0).then((_)=>{let y=_.slice(-2),m=y[0]*256+y[1],w=0;if(_.length>=9)w=(_[5]<<24)+(_[6]<<16)+(_[7]<<8)+(_[8]<<0);return{device_locked:_[4]===1,error_message:S(m),major:_[1],minor:_[2],patch:_[3],return_code:m,target_id:w.toString(16),test_mode:_[0]!==0}},f)}var LL=require("@swapkit/helpers");function fL(L){if(L==null||L.length<3)throw new LL.SwapKitError("wallet_ledger_invalid_params",{reason:"Path too short"});if(L.length>10)throw new LL.SwapKitError("wallet_ledger_invalid_params",{reason:"Path too long"});let _=Buffer.alloc(1+4*L.length);_.writeUInt8(L.length,0);for(let y=0;y<L.length;y+=1){let m=L[y]||0;if(y<3)m|=2147483648;_.writeInt32LE(m,1+y*4)}return _}function JL(L,_,y,m,w=n.JSON){return L.transport.send(o,v.SIGN_SECP256K1,_,w,m,[I.NoError,27012,27264]).then((R)=>{let O=R.slice(-2),X=O[0]*256+O[1],N=S(X);if(X===27264||X===27012)N=`${N} : ${R.slice(0,R.length-2).toString("ascii")}`;let B=null;if(R.length>2)B=R.slice(0,R.length-2);return{error_message:N,return_code:X,signature:B}},f)}function $0(L){if(L.length!==65)throw new LL.SwapKitError("wallet_ledger_invalid_params",{reason:"decompressed public key length should be 65 bytes"});let _=L.slice(33,65),y=Buffer.from([2+(_[_.length-1]&1)]);return Buffer.concat([y,L.slice(1,33)])}function qL(L,_){return L.transport.send(o,v.INS_PUBLIC_KEY_SECP256K1,0,0,_,[I.NoError]).then((y)=>{let m=y.slice(-2),w=m[0]*256+m[1],R=Buffer.from(y.slice(0,65));return{compressed_pk:$0(R),error_message:S(w),pk:R,return_code:w}},f)}function PL(L){if(!L||L.length!==5)throw new LL.SwapKitError("wallet_ledger_invalid_params",{reason:"Path must be exactly 5 elements"});let _=Buffer.alloc(20);return _.writeUInt32LE(2147483648+L[0],0),_.writeUInt32LE(2147483648+L[1],4),_.writeUInt32LE(2147483648+L[2],8),_.writeUInt32LE(L[3],12),_.writeUInt32LE(L[4],16),_}function zL(L,_,y,m,w=n.JSON){let R=XL.ADD;if(_===1)R=XL.INIT;if(_===y)R=XL.LAST;return JL(L,R,0,m,w)}function SL(L,_){return L.transport.send(o,v.GET_ADDR_SECP256K1,0,0,_,[I.NoError]).then((y)=>{let m=y.slice(-2),w=m[0]*256+m[1];return{compressed_pk:Buffer.from(y.slice(0,33)),error_message:S(w),pk:"OBSOLETE PROPERTY",return_code:w}},f)}class _L{transport;versionResponse;constructor(L){if(!L)throw new ZL.SwapKitError("wallet_ledger_transport_not_defined");this.transport=L}static serializeHRP(L){if(L==null||L.length<3||L.length>83)throw new ZL.SwapKitError("wallet_ledger_invalid_params",{reason:"Invalid HRP"});let _=Buffer.alloc(1+L.length);return _.writeUInt8(L.length,0),_.write(L,1),_}async serializePath(L){if(this.versionResponse=await $L(this.transport),this.versionResponse.return_code!==I.NoError)throw this.versionResponse;switch(this.versionResponse.major){case 1:return fL(L);case 2:return PL(L);default:return Buffer.alloc(0)}}async signGetChunks(L,_){let y=await this.serializePath(L),m=[];m.push(y);for(let w=0;w<_.length;w+=AL){let R=w+AL;if(w>_.length)R=_.length;m.push(_.slice(w,R))}return m}async getVersion(){try{return this.versionResponse=await $L(this.transport),this.versionResponse}catch(L){return f(L)}}appInfo(){return this.transport.send(176,1,0,0).then((L)=>{let _=L.slice(-2),y=_[0]*256+_[1],m="",w="",R=0,O=0;if(L[0]!==1)return{error_message:"response format ID not recognized",return_code:36865};let X=L[1];m=L.slice(2,2+X).toString("ascii");let N=2+X,B=L[N];N+=1,w=L.slice(N,N+B).toString("ascii"),N+=B;let G=L[N];return N+=1,R=G,O=L[N],{appName:m,appVersion:w,error_message:S(y),flag_onboarded:(O&4)!==0,flag_pin_validated:(O&128)!==0,flag_recovery:(O&1)!==0,flag_signed_mcu_code:(O&2)!==0,flagLen:R,flagsValue:O,return_code:y}},f)}deviceInfo(){return this.transport.send(224,1,0,0,Buffer.from([]),[I.NoError,28160]).then((L)=>{let _=L.slice(-2),y=_[0]*256+_[1];if(y===28160)return{error_message:"This command is only available in the Dashboard",return_code:y};let m=L.slice(0,4).toString("hex"),w=4,R=L[w];w+=1;let O=L.slice(w,w+R).toString();w+=R;let X=L[w];w+=1;let N=L.slice(w,w+X).toString("hex");w+=X;let B=L[w];w+=1;let G=L.slice(w,w+B);if(G[B-1]===0)G=L.slice(w,w+B-1);let A=G.toString();return{error_message:S(y),flag:N,mcuVersion:A,return_code:y,seVersion:O,targetId:m}},f)}async publicKey(L){try{let _=await this.serializePath(L);switch(this.versionResponse.major){case 1:return qL(this,_);case 2:{let y=Buffer.concat([_L.serializeHRP("thor"),_]);return SL(this,y)}default:return{error_message:"App Version is not supported",return_code:25600}}}catch(_){return f(_)}}getAddressAndPubKey(L,_,y=!1){return this.serializePath(L).then((m)=>{let w=Buffer.concat([_L.serializeHRP(_),m]);return this.transport.send(o,v.GET_ADDR_SECP256K1,y?CL.SHOW_ADDRESS_IN_DEVICE:CL.ONLY_RETRIEVE,0,w,[I.NoError]).then((R)=>{let O=R.slice(-2),X=O[0]*256+O[1],N=Buffer.from(R.slice(0,33));return{bech32_address:Buffer.from(R.slice(33,-2)).toString(),compressed_pk:N,error_message:S(X),return_code:X}},f)}).catch((m)=>f(m))}showAddressAndPubKey(L,_){return this.getAddressAndPubKey(L,_,!0)}signSendChunk(L,_,y,m=n.JSON){switch(this.versionResponse.major){case 1:return JL(this,L,_,y,m);case 2:return zL(this,L,_,y,m);default:return{error_message:"App Version is not supported",return_code:25600}}}async sign(L,_,y=n.JSON){let m=Buffer.from(_),w=[],R;try{w=await this.signGetChunks(L,m),R=await this.signSendChunk(1,w.length,w[0],y)}catch(X){f(X)}let O={error_message:R.error_message,return_code:R.return_code,signature:null};for(let X=1;X<w.length;X+=1)if(O=await this.signSendChunk(1+X,w.length,w[X],y),O.return_code!==I.NoError)break;return{error_message:O.error_message,return_code:O.return_code,signature:O.signature}}}var i=require("@swapkit/helpers"),ML=()=>navigator?.usb,J0=async()=>{let L=ML();if(typeof L?.getDevices!=="function")return{};let{ledgerUSBVendorId:_}=await import("@ledgerhq/devices"),m=(await L?.getDevices()).filter((w)=>w.vendorId===_);if(m.length>0)return m[0];return L?.requestDevice({filters:[{vendorId:_}]})},Y=async()=>{let L=await J0();if(!L)throw new i.SwapKitError("wallet_ledger_device_not_found");if(L.opened||await L.open(),L.configuration===null)await L.selectConfiguration(1);try{await L.reset()}catch{}let _=L.configuration??L.configurations?.[0],y=_?.interfaces.find(({alternates:G})=>G.some(({interfaceClass:A})=>A===255))||_?.interfaces.find(({alternates:G})=>G.some(({interfaceClass:A})=>A===3));if(!y)throw await L.close(),new i.SwapKitError("wallet_ledger_connection_error");let m=y.alternates?.find(({interfaceClass:G})=>G===3)?.interfaceClass,w=y.alternates?.find(({interfaceClass:G})=>G===255)?.interfaceClass;if(m&&!w){let G=(await import("@ledgerhq/hw-transport-webhid")).default;if(!await G.isSupported())throw await L.close(),new i.SwapKitError("wallet_ledger_webhid_not_supported");return await G.create()}try{await L.claimInterface(y.interfaceNumber)}catch(G){throw await L.close(),new i.SwapKitError("wallet_ledger_connection_claimed",G)}let R=(await import("@ledgerhq/hw-transport-webusb")).default;if(!await R.isSupported())throw new i.SwapKitError("wallet_ledger_webusb_not_supported");let{DisconnectedDevice:X}=await import("@ledgerhq/errors"),N=new R(L,y.interfaceNumber),B=(G)=>{if(L===G.device)ML()?.removeEventListener("disconnect",B),N._emitDisconnect(new X)};return ML()?.addEventListener("disconnect",B),N};class yL{ledgerTimeout=50000;derivationPath=K.NetworkDerivationPath.GAIA;transport;ledgerApp;chain="thor";checkOrCreateTransportAndLedger=async(L=!1)=>{if(!L&&this.transport&&this.ledgerApp)return;try{switch(this.transport=L||!this.transport?await Y():this.transport,this.chain){case"thor":{this.ledgerApp=L||!this.ledgerApp?new _L(this.transport):this.ledgerApp;break}case"cosmos":{let _=(await import("@ledgerhq/hw-app-cosmos")).default;this.ledgerApp=L||!this.ledgerApp?new _(this.transport):this.ledgerApp}}return this.ledgerApp}catch(_){throw new K.SwapKitError("wallet_ledger_connection_error",_)}};validateResponse=(L,_)=>{switch(L){case K.LedgerErrorCode.NoError:return;case K.LedgerErrorCode.LockedDevice:throw new K.SwapKitError("wallet_ledger_device_locked",{message:`Ledger is locked: ${_}`});case K.LedgerErrorCode.TC_NotFound:throw new K.SwapKitError("wallet_ledger_device_not_found");default:break}}}class QL extends yL{pubKey=null;derivationPath;constructor(L=x.NetworkDerivationPath.GAIA){super();this.chain="cosmos",this.derivationPath=x.derivationPathToString(L)}connect=async()=>{await this.checkOrCreateTransportAndLedger(!0);let{publicKey:L,address:_}=await this.getAddressAndPubKey();return this.pubKey=Buffer.from(L,"hex").toString("base64"),_};getAddressAndPubKey=async()=>{return await this.checkOrCreateTransportAndLedger(!0),await this.ledgerApp.getAddress(this.derivationPath,this.chain)};signTransaction=async(L,_="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:y,error_message:m,signature:w}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new x.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(y,m),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:_,signature:w}]};signAmino=async(L,_)=>{await this.checkOrCreateTransportAndLedger(!0);let y=await this.getAccounts();if(y.findIndex((F)=>F.address===L)===-1)throw new x.SwapKitError("wallet_ledger_address_not_found",{address:L});let w=await import("@cosmjs/amino"),R=w.encodeSecp256k1Signature??w.default?.encodeSecp256k1Signature,O=w.serializeSignDoc??w.default?.serializeSignDoc,X=await import("@cosmjs/crypto"),N=X.Secp256k1Signature??X.default?.Secp256k1Signature,B=O(_),G=await this.ledgerApp.sign(this.derivationPath,B);this.validateResponse(G.return_code,G.error_message);let A=N.fromDer(G.signature).toFixedLength();return{signature:R(y[0].pubkey,A),signed:_}};getAccounts=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.getAddressAndPubKey();return[{address:L.address,algo:"secp256k1",pubkey:Buffer.from(L.publicKey,"hex")}]}}var $=require("@swapkit/helpers"),KL=require("ethers");class D extends KL.AbstractSigner{chainId=$.ChainId.Ethereum;derivationPath="";ledgerApp=null;ledgerTimeout=50000;constructor({provider:L,derivationPath:_=$.NetworkDerivationPath.OP,chainId:y=$.ChainId.Optimism}){super(L);this.chainId=y||$.ChainId.Ethereum,this.derivationPath=typeof _==="string"?_:$.derivationPathToString(_),Object.defineProperty(this,"provider",{enumerable:!0,value:L||null,writable:!1})}connect=(L)=>new D({chainId:this.chainId,derivationPath:this.derivationPath,provider:L});checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let L=await Y(),_=(await import("@ledgerhq/hw-app-eth")).default;this.ledgerApp=new _(L)};getAddress=async()=>{let L=await this.getAddressAndPubKey();if(!L)throw new $.SwapKitError("wallet_ledger_failed_to_get_address");return L.address};getAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath)};showAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath,!0)};signMessage=async(L)=>{let{Signature:_}=await import("ethers");await this.createTransportAndLedger();let y=await this.ledgerApp?.signPersonalMessage(this.derivationPath,L);if(!y)throw new $.SwapKitError("wallet_ledger_signing_error");return y.r=`0x${y.r}`,y.s=`0x${y.s}`,_.from(y).serialized};sendTransaction=async(L)=>{if(!this.provider)throw new $.SwapKitError("wallet_ledger_no_provider");let _=await this.signTransaction(L);return await this.provider.broadcastTransaction(_)};signTypedData=async(L,_,y,m)=>{let{buildEIP712DomainType:w}=await import("@swapkit/toolboxes/evm"),{Signature:R,TypedDataEncoder:O}=await import("ethers");await this.createTransportAndLedger();let{EIP712Domain:X,...N}=_,B=m??O.from(N).primaryType,G;try{G=await this.ledgerApp?.signEIP712Message(this.derivationPath,{domain:L,message:y,primaryType:B,types:{EIP712Domain:w(L),...N}})}catch(A){let F=A instanceof Error&&"statusCode"in A;if(!F||F&&A.statusCode===27013)throw A;let J=O.hashDomain(L).slice(2),Z=O.from(N).hash(y).slice(2);G=await this.ledgerApp?.signEIP712HashedMessage(this.derivationPath,J,Z)}if(!G)throw new $.SwapKitError("wallet_ledger_signing_error");return G.r=`0x${G.r}`,G.s=`0x${G.s}`,R.from(G).serialized};signTransaction=async(L)=>{let{Transaction:_}=await import("ethers");await this.createTransportAndLedger();let y=await this.provider?.getTransactionCount(L.from||await this.getAddress()),m={chainId:L.chainId||this.chainId,data:L.data,gasLimit:L.gasLimit,...L.gasPrice&&{gasPrice:L.gasPrice},...!L.gasPrice&&L.maxFeePerGas&&{maxFeePerGas:L.maxFeePerGas,maxPriorityFeePerGas:L.maxPriorityFeePerGas},nonce:L.nonce!==void 0?Number((L.nonce||y||0).toString()):y,to:L.to?.toString(),type:L.type&&!Number.isNaN(L.type)?L.type:L.maxFeePerGas?2:0,value:L.value},w=_.from(m).unsignedSerialized.slice(2),{ledgerService:R}=await import("@ledgerhq/hw-app-eth"),O=await R.resolveTransaction(w,{},{erc20:!0,externalPlugins:!0}),X=await this.ledgerApp?.signTransaction(this.derivationPath,w,O);if(!X)throw new $.SwapKitError("wallet_ledger_signing_error");let{r:N,s:B,v:G}=X;return _.from({...m,signature:{r:`0x${N}`,s:`0x${B}`,v:Number(BigInt(G))}}).serialized}}var kL=(L)=>new D({...L,chainId:$.ChainId.Arbitrum}),cL=(L)=>new D({...L,chainId:$.ChainId.Aurora}),VL=(L)=>new D({...L,chainId:$.ChainId.Avalanche}),gL=(L)=>new D({...L,chainId:$.ChainId.Base}),IL=(L)=>new D({...L,chainId:$.ChainId.Ethereum}),EL=(L)=>new D({...L,chainId:$.ChainId.Gnosis}),lL=(L)=>new D({...L,chainId:$.ChainId.Optimism}),hL=(L)=>new D({...L,chainId:$.ChainId.Polygon}),bL=(L)=>new D({...L,chainId:$.ChainId.BinanceSmartChain}),vL=(L)=>new D({...L,chainId:$.ChainId.Monad}),xL=(L)=>new D({...L,chainId:$.ChainId.XLayer}),dL=(L)=>new D({...L,chainId:$.ChainId.Berachain});async function oL(L){let _=(await import("@ledgerhq/hw-app-near")).default,{Chain:y,NetworkDerivationPath:m,SwapKitError:w}=await import("@swapkit/helpers"),R=await Y(),O=new _(R),X=(L||m[y.Near]).join("'/").concat("'"),{address:N,publicKey:B}=await O.getAddress(X);return{getAddress(){return Promise.resolve(N)},async getPublicKey(){let{PublicKey:A}=await import("@near-js/crypto");return A.fromString(`ed25519:${B}`)},signDelegateAction(A){return Promise.reject(new w("wallet_ledger_method_not_supported",{method:"signDelegateAction",wallet:"Ledger"}))},signNep413Message(A,F,J,Z,W){return Promise.reject(new w("wallet_ledger_method_not_supported",{method:"signNep413Message",wallet:"Ledger"}))},async signTransaction(A){let{Signature:F,SignedTransaction:J}=await import("@near-js/transactions");try{let Z=await O.signTransaction(A.encode(),X);if(!Z)throw Error("Signature undefined");let W=new F({data:Z,keyType:0}),H=new J({signature:W,transaction:A});return[Z,H]}catch(Z){throw new w("wallet_ledger_signing_error",{error:Z})}}}}var U=require("@swapkit/helpers");class nL{derivationPath;ledgerApp=null;address=null;publicKey=null;constructor(L){this.derivationPath=typeof L==="string"?L:U.derivationPathToString(L||U.NetworkDerivationPath[U.Chain.Sui])}getLedgerPath(){return this.derivationPath.replace(/^m\//,"").replace(/\/(\d+)\/(\d+)$/,"/$1'/$2'")}async createTransportAndLedger(){if(this.ledgerApp)return;let L=await Y(),_=(await import("@ledgerhq/hw-app-sui")).default;this.ledgerApp=new _(L)}async connect(){if(await this.createTransportAndLedger(),!this.ledgerApp)throw new U.SwapKitError("wallet_ledger_transport_error");let L=this.getLedgerPath(),_=await this.ledgerApp.getPublicKey(L);if(!_?.publicKey)throw new U.SwapKitError("wallet_ledger_failed_to_get_address");return this.publicKey=_.publicKey,this.address=`0x${Buffer.from(_.address).toString("hex")}`,this.address}toSuiAddress(){if(!this.address)throw new U.SwapKitError("wallet_ledger_failed_to_get_address");return this.address}async getAddress(){if(this.address)return this.address;return await this.connect()}async signTransaction(L){let _=L instanceof Uint8Array?L:L.transaction;if(await this.createTransportAndLedger(),!this.ledgerApp)throw new U.SwapKitError("wallet_ledger_transport_error");if(!this.publicKey)throw new U.SwapKitError("wallet_ledger_failed_to_get_address");try{let y=this.getLedgerPath(),m=new Uint8Array(3+_.length);m[0]=0,m[1]=0,m[2]=0,m.set(_,3);let w=await this.ledgerApp.signTransaction(y,m);if(!w?.signature)throw new U.SwapKitError("wallet_ledger_signing_error");let R=this.publicKey.length===33?this.publicKey.slice(1):this.publicKey;if(R.length!==32)throw new U.SwapKitError("wallet_ledger_signing_error",{error:"Invalid public key length"});let O=new Uint8Array(97);O[0]=0,O.set(w.signature,1),O.set(R,65);let X=Buffer.from(O).toString("base64");return{bytes:Buffer.from(_).toString("base64"),signature:X}}catch(y){throw new U.SwapKitError("wallet_ledger_signing_error",{error:y})}}}var iL=(L)=>new nL(L);var tL=require("@scure/base"),wL=require("@swapkit/helpers");var uL=require("@scure/base"),k=require("@swapkit/helpers"),WL=(L)=>{if(L.length<64)throw new k.SwapKitError("wallet_ledger_invalid_signature",{reason:"Too short"});if(L[0]!==48)throw new k.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected first byte 0x30"});if(L[1]+2!==L.length)throw new k.SwapKitError("wallet_ledger_invalid_signature",{reason:"signature length does not match TLV"});if(L[2]!==2)throw new k.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02"});let _=L[3],y=L.slice(4,_+4);if(y.length===33&&y[0]===0)y=y.slice(1,33);else if(y.length===33)throw new k.SwapKitError("wallet_ledger_invalid_signature",{reason:"r too long"});while(y.length<32)y.unshift(0);if(L[_+4]!==2)throw new k.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02 for s"});let m=L[_+5];if(4+_+2+m!==L.length)throw new k.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV byte lengths do not match message length"});let w=L.slice(_+6,L.length);if(w.length===33&&w[0]===0)w=w.slice(1,33);else if(w.length===33)throw new k.SwapKitError("wallet_ledger_invalid_signature",{reason:"s too long"});while(w.length<32)w.unshift(0);if(y.length!==32||w.length!==32)throw new k.SwapKitError("wallet_ledger_invalid_signature",{reason:"must be 32 bytes each"});return uL.base64.encode(Buffer.concat([y,w]))};class YL extends yL{pubKey=null;derivationPath;constructor(L=wL.NetworkDerivationPath.THOR){super();this.chain="thor",this.derivationPath=L}get pubkey(){return this.pubKey}connect=async()=>{await this.checkOrCreateTransportAndLedger();let{compressed_pk:L,bech32_address:_}=await this.getAddressAndPubKey();return this.pubKey=tL.base64.encode(L),_};getAddressAndPubKey=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.ledgerApp.getAddressAndPubKey(this.derivationPath,this.chain);return this.validateResponse(L.return_code,L.error_message),L};showAddressAndPubKey=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.ledgerApp.showAddressAndPubKey(this.derivationPath,this.chain);return this.validateResponse(L.return_code,L.error_message),L};signTransaction=async(L,_="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:y,error_message:m,signature:w}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new wL.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(y,m),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:_,signature:WL(w)}]};sign=async(L)=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:_,error_message:y,signature:m}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new wL.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(_,y),WL(m)}}var c=require("@swapkit/helpers");class pL{derivationPath;ledgerApp=null;ledgerTimeout=50000;constructor(L){this.derivationPath=typeof L==="string"?L:c.derivationPathToString(L||c.NetworkDerivationPath.TRON)}checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let L=await Y(),_=(await import("@ledgerhq/hw-app-trx")).default;this.ledgerApp=new _(L)};getAddress=async()=>{let L=await this.getAddressAndPubKey();if(!L)throw new c.SwapKitError("wallet_ledger_failed_to_get_address");return L.address};getAddressAndPubKey=async()=>{await this.createTransportAndLedger();let L=await this.ledgerApp?.getAddress(this.derivationPath);if(!L)throw new c.SwapKitError("wallet_ledger_failed_to_get_address");return{address:L.address,publicKey:L.publicKey}};showAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath,!0)};signTransaction=async(L)=>{if(await this.createTransportAndLedger(),!this.ledgerApp)throw new c.SwapKitError("wallet_ledger_transport_error");let _=JSON.stringify(L);try{let y=await this.ledgerApp.signTransaction(this.derivationPath,_,[]);if(!y)throw new c.SwapKitError("wallet_ledger_signing_error");return{...L,signature:[y]}}catch(y){throw new c.SwapKitError("wallet_ledger_signing_error",{error:y})}}}var eL=(L)=>new pL(L);var mL=require("@scure/base"),E=require("@swapkit/helpers");var sL=["bitcoin-cash","dash","dogecoin","zcash"],aL=({tx:L,inputUtxos:_,btcApp:y,derivationPath:m,chain:w},R)=>{let O=_.map((A)=>{return[y.splitTransaction(A.txHex||"",!sL.includes(w),w==="zcash"),A.index,void 0,void 0]}),X=mL.hex.encode(L.unsignedTx),N=y.splitTransaction(X,!0),B=y.serializeTransactionOutputs(N).toString("hex"),G={additionals:["bech32"],associatedKeysets:O.map(()=>m),inputs:O,outputScriptHex:B,segwit:!0,useTrustedInputForSegwit:!0};return y.createPaymentTransaction({...G,...R})},Z0=({tx:L,inputUtxos:_,btcApp:y,derivationPaths:m,chain:w},R)=>{if(m.length!==_.length)throw new E.SwapKitError("wallet_ledger_invalid_params",{message:`Derivation paths count (${m.length}) must match inputs count (${_.length})`});let O=_.map((A)=>{return[y.splitTransaction(A.txHex||"",!sL.includes(w),w==="zcash"),A.index,void 0,void 0]}),X=mL.hex.encode(L.unsignedTx),N=y.splitTransaction(X,!0),B=y.serializeTransactionOutputs(N).toString("hex"),G={additionals:["bech32"],associatedKeysets:m,inputs:O,outputScriptHex:B,segwit:!0,useTrustedInputForSegwit:!0};return y.createPaymentTransaction({...G,...R})},u=({chain:L,additionalSignParams:_})=>{let y,m=null;async function w(O=!0){if(O&&!y)new E.SwapKitError("wallet_ledger_connection_error",{message:`Ledger connection failed:
|
|
2
|
-
${JSON.stringify({btcApp:y,checkBtcApp:O})}`});m||=await Y()}async function R(){m=await Y(),y=new(await import("@ledgerhq/hw-app-btc")).default({currency:L,transport:m})}return(O)=>{let X=typeof O==="string"?O:E.derivationPathToString(O),N=E.getWalletFormatFor(X);return{connect:async()=>{await w(!1),y=new(await import("@ledgerhq/hw-app-btc")).default({currency:L,transport:m})},getAddress:async()=>{let{toCashAddress:B}=await import("@swapkit/toolboxes/utxo");await w(!1);let{bitcoinAddress:G}=await y.getWalletPublicKey(X,{format:N});if(!G)throw new E.SwapKitError("wallet_ledger_get_address_error",{message:`Cannot get ${L} address from ledger derivation path: ${X}`});return L==="bitcoin-cash"&&N==="legacy"?B(G).replace(/(bchtest:|bitcoincash:)/,""):G},getExtendedPublicKey:async(B="84'/0'/0'",G=76067358)=>{return await w(!1),y.getWalletXpub({path:B,xpubVersion:G})},signPCZT:async(B)=>{if(L!=="zcash")throw new E.SwapKitError("wallet_ledger_chain_not_supported",{message:"PCZT signing is only supported for Zcash"});await R();let{ZcashTransaction:G,Script:A}=await import("@swapkit/utxo-signer"),F=B.getGlobal(),J=new G({consensusBranchId:F.consensusBranchId,expiryHeight:F.expiryHeight,lockTime:F.lockTime,version:F.txVersion,versionGroupId:F.versionGroupId}),Z=[];for(let M=0;M<B.inputsLength;M++){let Q=B.getInput(M);J.addInput({index:Q.index,script:new Uint8Array,sequence:Q.sequence??4294967295,txid:Q.txid,value:Q.value}),Z.push({hash:mL.hex.encode(new Uint8Array([...Q.txid].reverse())),index:Q.index,txHex:M0(Q,F),value:Number(Q.value),witnessUtxo:{script:Q.scriptPubkey,value:Number(Q.value)}})}for(let M=0;M<B.outputsLength;M++){let Q=B.getOutput(M);J.addOutput({amount:Q.value,script:Q.scriptPubkey})}let W=await aL({btcApp:y,chain:L,derivationPath:X,inputUtxos:Z,tx:J},{..._,expiryHeight:(()=>{let M=Buffer.alloc(4);return M.writeUInt32LE(F.expiryHeight),M})(),lockTime:F.lockTime}),H=G.fromHex(W,{allowUnknownOutputs:!0}),q=B.clone();for(let M=0;M<H.inputsLength;M++){let Q=H.getInput(M);if(Q.script&&Q.script.length>0){let V=A.decode(Q.script);if(V.length>=2)q.addSignature(M,V[1],V[0])}}return q},signTransaction:async(B,G)=>{return await R(),aL({btcApp:y,chain:L,derivationPath:X,inputUtxos:G,tx:B},_)},signTransactionWithMultiplePaths:async(B,G,A)=>{return await R(),Z0({btcApp:y,chain:L,derivationPaths:A,inputUtxos:G,tx:B},_)}}}};function M0(L,_){let y=[],m=(_.txVersion|2147483648)>>>0;y.push(m&255,m>>8&255,m>>16&255,m>>24&255);let w=_.versionGroupId;y.push(w&255,w>>8&255,w>>16&255,w>>24&255),y.push(0);let R=L.index+1;if(R<253)y.push(R);else y.push(253,R&255,R>>8&255);for(let N=0;N<L.index;N++)y.push(0,0,0,0,0,0,0,0),y.push(0);let O=L.value;y.push(Number(O&0xffn),Number(O>>8n&0xffn),Number(O>>16n&0xffn),Number(O>>24n&0xffn),Number(O>>32n&0xffn),Number(O>>40n&0xffn),Number(O>>48n&0xffn),Number(O>>56n&0xffn));let X=L.scriptPubkey;if(X.length<253)y.push(X.length);else y.push(253,X.length&255,X.length>>8&255);for(let N of X)y.push(N);return y.push(_.lockTime&255,_.lockTime>>8&255,_.lockTime>>16&255,_.lockTime>>24&255),y.push(_.expiryHeight&255,_.expiryHeight>>8&255,_.expiryHeight>>16&255,_.expiryHeight>>24&255),y.push(0,0,0,0,0,0,0,0),y.push(0),y.push(0),y.push(0),mL.hex.encode(new Uint8Array(y))}var rL=u({chain:"bitcoin"}),L0=u({chain:"litecoin"}),_0=u({additionalSignParams:{additionals:["abc"],segwit:!1,sigHashType:65},chain:"bitcoin-cash"}),y0=u({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dogecoin"}),w0=u({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dash"}),m0=u({additionalSignParams:{additionals:["zcash","sapling"],expiryHeight:(()=>{let L=Buffer.alloc(4);return L.writeUInt32LE(0),L})(),lockTime:0,segwit:!1,useTrustedInputForSegwit:!1},chain:"zcash"});var T0=Q0(require("@ledgerhq/hw-app-xrp")),t=require("@swapkit/helpers"),UL=require("ripple-binary-codec");var W0=2147483648;function Y0(L){let _={};for(let y in L)if(L[y]!==null&&L[y]!==void 0)_[y]=L[y];return _}function U0(L){return new T0.default(L)}var R0=async(L)=>{let _=t.derivationPathToString(L||t.NetworkDerivationPath[t.Chain.Ripple]),y=await Y(),m=U0(y),{address:w,publicKey:R}=await m.getAddress(_);async function O(X){let{hashes:N}=await import("@swapkit/toolboxes/ripple"),G={...Y0(X),Flags:X.Flags||W0,SigningPubKey:R.toUpperCase()},A=UL.encode(G),F=await m.signTransaction(_,A),J=UL.encode({...G,TxnSignature:F});return{hash:N.hashSignedTx(J),tx_blob:J}}return{getAddress:()=>w,signTransaction:O}};var P=async({chain:L,derivationPath:_})=>{let{match:y}=await import("ts-pattern");return y(L).returnType().with(j.Chain.THORChain,()=>Promise.resolve(new YL(_))).with(j.Chain.Cosmos,()=>Promise.resolve(new QL(_))).with(j.Chain.Bitcoin,()=>Promise.resolve(rL(_))).with(j.Chain.BitcoinCash,()=>Promise.resolve(_0(_))).with(j.Chain.Dash,()=>Promise.resolve(w0(_))).with(j.Chain.Dogecoin,()=>Promise.resolve(y0(_))).with(j.Chain.Litecoin,()=>Promise.resolve(L0(_))).with(j.Chain.Zcash,()=>Promise.resolve(m0(_))).with(j.Chain.Ripple,()=>Promise.resolve(R0(_))).with(j.Chain.Tron,()=>Promise.resolve(eL(_))).with(j.Chain.Sui,()=>Promise.resolve(iL(_))).with(j.Chain.Near,()=>{return Promise.resolve(oL(_))}).with(j.Chain.Arbitrum,j.Chain.Aurora,j.Chain.Avalanche,j.Chain.Berachain,j.Chain.BinanceSmartChain,j.Chain.Ethereum,j.Chain.Gnosis,j.Chain.Monad,j.Chain.Optimism,j.Chain.Polygon,j.Chain.Base,j.Chain.XLayer,async()=>{let{getProvider:m}=await import("@swapkit/toolboxes/evm"),w={derivationPath:_,provider:await m(L)};return y(L).with(j.Chain.BinanceSmartChain,()=>bL(w)).with(j.Chain.Avalanche,()=>VL(w)).with(j.Chain.Arbitrum,()=>kL(w)).with(j.Chain.Berachain,()=>dL(w)).with(j.Chain.Optimism,()=>lL(w)).with(j.Chain.Polygon,()=>hL(w)).with(j.Chain.Base,()=>gL(w)).with(j.Chain.Aurora,()=>cL(w)).with(j.Chain.Gnosis,()=>EL(w)).with(j.Chain.Monad,()=>vL(w)).with(j.Chain.XLayer,()=>xL(w)).otherwise(()=>IL(w))}).otherwise(()=>{throw new j.SwapKitError("wallet_chain_not_supported",{chain:L,wallet:j.WalletOption.LEDGER})})};var O0=NL.createWallet({connect:({addChain:L,supportedChains:_,walletType:y})=>async function(w,R){let[O]=T.filterSupportedChains({chains:w,supportedChains:_,walletType:y});if(!O)return!1;let X=await z0({chain:O,derivationPath:R});return L({...X,chain:O,walletType:T.WalletOption.LEDGER}),!0},directSigningSupport:{[T.Chain.Arbitrum]:!0,[T.Chain.Aurora]:!0,[T.Chain.Avalanche]:!0,[T.Chain.Base]:!0,[T.Chain.Berachain]:!0,[T.Chain.BinanceSmartChain]:!0,[T.Chain.Ethereum]:!0,[T.Chain.Gnosis]:!0,[T.Chain.Monad]:!0,[T.Chain.Cosmos]:!0,[T.Chain.Near]:!0,[T.Chain.Optimism]:!0,[T.Chain.Polygon]:!0,[T.Chain.Ripple]:!0,[T.Chain.Sui]:!0,[T.Chain.Tron]:!0,[T.Chain.XLayer]:!0},name:"connectLedger",supportedChains:[T.Chain.Arbitrum,T.Chain.Aurora,T.Chain.Avalanche,T.Chain.Base,T.Chain.Berachain,T.Chain.BinanceSmartChain,T.Chain.Bitcoin,T.Chain.BitcoinCash,T.Chain.Cosmos,T.Chain.Dash,T.Chain.Dogecoin,T.Chain.Ethereum,T.Chain.Gnosis,T.Chain.Litecoin,T.Chain.Monad,T.Chain.Near,T.Chain.Optimism,T.Chain.Polygon,T.Chain.Ripple,T.Chain.Sui,T.Chain.THORChain,T.Chain.XLayer,T.Chain.Tron,T.Chain.Zcash],walletType:T.WalletOption.LEDGER}),f0=NL.getWalletSupportedChains(O0);function q0(L,_="t"){if(!L?.includes("=:"))return L;let y=L.includes(`:${_}:`)?L.split(`:${_}:`)[0]:L;return y?.substring(0,y.lastIndexOf(":"))}function BL(L){if(Array.isArray(L))return L.forEach((m,w)=>{L[w]=BL(m)}),L;if(typeof L!=="object")return L;let _={},y=Object.keys(L).sort();for(let m of y)_[m]=BL(L[m]);return _}function P0(L){return JSON.stringify(BL(L))}async function z0({chain:L,derivationPath:_}){switch(L){case T.Chain.BitcoinCash:case T.Chain.Bitcoin:case T.Chain.Dash:case T.Chain.Dogecoin:case T.Chain.Litecoin:case T.Chain.Zcash:{let{getUtxoToolbox:y}=await import("@swapkit/toolboxes/utxo"),m=L,w=y(m),R=await P({chain:L,derivationPath:_}),O=await g({chain:L,ledgerClient:R}),X=async(F)=>{let J=F.feeRate||(await w.getFeeRates())[T.FeeOption.Average],Z=[T.Chain.Bitcoin].includes(L)?F.memo:q0(F.memo),{tx:W,inputs:H}=await w.createTransaction({...F,feeRate:J,fetchTxHex:!0,memo:Z,sender:O}),q=await R.signTransaction(W,H);return await w.broadcastTx(q)};async function N(){if(!R.getExtendedPublicKey)return;let F=await R.getExtendedPublicKey(),J=_?.slice(0,3)??T.NetworkDerivationPath[L].slice(0,3);return{path:T.derivationPathToString(J),xpub:F}}async function B({index:F,change:J=!1}){try{let W=[..._?.slice(0,3)??T.NetworkDerivationPath[L].slice(0,3),Number(J),F],H=await P({chain:m,derivationPath:W});return{address:await g({chain:m,ledgerClient:H}),change:J,index:F,pubkey:""}}catch{return}}let G=l.createHDWalletHelpers({chain:m,deriveAddress:B,getBalance:w.getBalance,getUtxos:(F)=>l.getUtxoApi(m).getUtxos({address:F,fetchTxHex:!0})});async function A({utxos:F,recipient:J,assetValue:Z,memo:W,feeRate:H,feeOptionKey:q,changeAddress:M}){if(!F.length)throw new T.SwapKitError("wallet_ledger_invalid_params",{message:"No UTXOs provided for multi-address transfer"});let Q=H||(await w.getFeeRates())[q||T.FeeOption.Fast],V=W?l.compileMemo(W):null,p=[{address:J,value:Z.getBaseValue("number")}];if(V)p.push({script:V,value:0});let HL=F.map(({hash:h,index:d,value:b,txHex:s,witnessUtxo:r})=>({hash:h,index:d,txHex:s,value:b,witnessUtxo:r})),{inputs:e,outputs:z}=w.accumulative({chain:m,feeRate:Q,inputs:HL,outputs:p});if(!(e&&z))throw new T.SwapKitError("wallet_ledger_connection_error",{message:"Insufficient balance for multi-address transfer"});let{Transaction:TL}=await import("@swapkit/utxo-signer"),RL=new TL({allowLegacyWitnessUtxo:!0,version:1}),OL=M||F[0]?.address||J;l.addInputsAndOutputs({chain:m,compiledMemo:V,inputs:e,outputs:z,sender:OL,tx:RL});let FL=_?.slice(0,3)??T.NetworkDerivationPath[L].slice(0,3),jL=e.map((h)=>{let d=F.find((GL)=>GL.hash===h.hash&&GL.index===h.index),b=d?.derivationIndex??0,s=d?.isChange??!1,r=[...FL,Number(s),b];return T.derivationPathToString(r)});if(!R.signTransactionWithMultiplePaths)throw new T.SwapKitError("wallet_ledger_method_not_supported",{method:"signTransactionWithMultiplePaths"});let a=await R.signTransactionWithMultiplePaths(RL,e,jL);return w.broadcastTx(a)}return{...w,...G,address:O,deriveAddressAtIndex:B,getExtendedPublicKey:N,transfer:X,transferFromMultipleAddresses:A}}case T.Chain.Ethereum:case T.Chain.Avalanche:case T.Chain.Arbitrum:case T.Chain.Berachain:case T.Chain.Optimism:case T.Chain.Polygon:case T.Chain.BinanceSmartChain:case T.Chain.Base:case T.Chain.Aurora:case T.Chain.Gnosis:case T.Chain.Monad:case T.Chain.XLayer:{let{getEvmToolboxAsync:y}=await import("@swapkit/toolboxes/evm"),m=await P({chain:L,derivationPath:_}),w=await g({chain:L,ledgerClient:m});return{...await y(L,{signer:m}),address:w}}case T.Chain.Cosmos:{let{createSigningStargateClient:y,getMsgSendDenom:m,getCosmosToolbox:w}=await import("@swapkit/toolboxes/cosmos"),R=await P({chain:L,derivationPath:_}),O=await g({chain:L,ledgerClient:R});return{...await w(T.Chain.Cosmos,{signer:R}),address:O,transfer:async({assetValue:B,recipient:G,memo:A})=>{if(!B)throw new T.SwapKitError("wallet_ledger_invalid_asset");let F={amount:[{amount:B.getBaseValue("string"),denom:m(`u${B.symbol}`).toLowerCase()}],fromAddress:O,toAddress:G},J=await T.getRPCUrl(L),Z=await y(J,R,"0.007uatom"),{transactionHash:W}=await Z.signAndBroadcast(O,[{typeUrl:"/cosmos.bank.v1beta1.MsgSend",value:F}],2,A);return W}}}case T.Chain.THORChain:{let{SignMode:y}=await import("cosmjs-types/cosmos/tx/signing/v1beta1/signing.js"),{TxRaw:m}=await import("cosmjs-types/cosmos/tx/v1beta1/tx.js"),w=await import("@cosmjs/proto-signing"),R=w.encodePubkey??w.default?.encodePubkey,O=w.makeAuthInfoBytes??w.default?.makeAuthInfoBytes,{createStargateClient:X,buildEncodedTxBody:N,getCosmosToolbox:B,buildAminoMsg:G,getDefaultChainFee:A,fromBase64:F,parseAminoMessageForDirectSigning:J}=await import("@swapkit/toolboxes/cosmos"),Z=B(L),W=await P({chain:L,derivationPath:_}),H=await g({chain:L,ledgerClient:W}),q=A(L),{pubkey:M,signTransaction:Q,sign:V}=W,p=async({memo:z="",assetValue:TL,...RL})=>{let OL=await Z.getAccount(H);if(!OL)throw new T.SwapKitError("wallet_ledger_invalid_account");if(!TL)throw new T.SwapKitError("wallet_ledger_invalid_asset");if(!M)throw new T.SwapKitError("wallet_ledger_pubkey_not_found");let{accountNumber:FL,sequence:jL}=OL,a=(jL||0).toString(),h=BL([G({assetValue:TL,memo:z,sender:H,...RL})]),d=P0({account_number:FL?.toString(),chain_id:T.THORConfig.chainId,fee:q,memo:z,msgs:h,sequence:a}),b=await Q(d,a);if(!b)throw new T.SwapKitError("wallet_ledger_signing_error");let s=R({type:"tendermint/PubKeySecp256k1",value:M}),r=h.map(J),GL=await N({chain:L,memo:z,msgs:r}),G0=O([{pubkey:s,sequence:Number(a)}],q.amount,Number.parseInt(q.gas,10),void 0,void 0,y.SIGN_MODE_LEGACY_AMINO_JSON),X0=b?.[0]?.signature?F(b[0].signature):Uint8Array.from([]),B0=m.fromPartial({authInfoBytes:G0,bodyBytes:GL,signatures:[X0]}),N0=m.encode(B0).finish(),F0=await T.getRPCUrl(T.Chain.THORChain),j0=await X(F0),{transactionHash:A0}=await j0.broadcastTx(N0);return A0};return{...Z,address:H,deposit:(z)=>p(z),signMessage:V,transfer:(z)=>p(z)}}case T.Chain.Near:{let{getNearToolbox:y}=await import("@swapkit/toolboxes/near"),m=await P({chain:L,derivationPath:_}),w=await m.getAddress();return{...y({signer:m}),address:w}}case T.Chain.Ripple:{let{getRippleToolbox:y}=await import("@swapkit/toolboxes/ripple"),m=await P({chain:L,derivationPath:_}),w=m.getAddress();return{...y({signer:m}),address:w}}case T.Chain.Tron:{let{getTronToolbox:y}=await import("@swapkit/toolboxes/tron"),m=await P({chain:L,derivationPath:_}),w=await g({chain:L,ledgerClient:m});return{...y({signer:m}),address:w}}case T.Chain.Sui:{let{getSuiToolbox:y}=await import("@swapkit/toolboxes/sui"),m=await P({chain:L,derivationPath:_}),w=await g({chain:L,ledgerClient:m});return{...y({signer:m}),address:w}}default:throw new T.SwapKitError("wallet_ledger_chain_not_supported",{chain:L})}}
|
|
1
|
+
var c0={};Z0(c0,{ledgerWallet:()=>G0,LEDGER_SUPPORTED_CHAINS:()=>M0});module.exports=U0(c0);var m=require("@swapkit/helpers"),M=require("@swapkit/toolboxes/utxo"),DL=require("@swapkit/wallet-core");var j=require("@swapkit/helpers"),V=async({chain:L,ledgerClient:_})=>{if(!_)return"";switch(L){case j.Chain.Cosmos:case j.Chain.THORChain:return _.connect();case j.Chain.Ethereum:case j.Chain.BinanceSmartChain:case j.Chain.Avalanche:case j.Chain.Polygon:case j.Chain.Arbitrum:case j.Chain.Berachain:case j.Chain.Optimism:case j.Chain.Base:case j.Chain.Aurora:case j.Chain.Gnosis:case j.Chain.Monad:case j.Chain.XLayer:return _.getAddress();case j.Chain.Bitcoin:case j.Chain.BitcoinCash:case j.Chain.Dash:case j.Chain.Dogecoin:case j.Chain.Litecoin:case j.Chain.Zcash:{let y=_;await y.connect();let T=await y.getAddress();return L===j.Chain.BitcoinCash?T.replace("bitcoincash:",""):T}case j.Chain.Near:return await _.getAddress();case j.Chain.Ripple:return _.getAddress();case j.Chain.Tron:return _.getAddress();case j.Chain.Sui:return _.connect();default:throw new j.SwapKitError("wallet_chain_not_supported",{chain:L,wallet:j.WalletOption.LEDGER})}};var N=require("@swapkit/helpers");var o=require("@swapkit/helpers");var g=require("@swapkit/helpers");var JL=require("@swapkit/helpers");var i=85,jL=250;var h={GET_ADDR_SECP256K1:4,GET_VERSION:0,INS_PUBLIC_KEY_SECP256K1:1,SIGN_SECP256K1:2},XL={ADD:1,INIT:0,LAST:2},AL={ONLY_RETRIEVE:0,SHOW_ADDRESS_IN_DEVICE:1},n={JSON:0},E={NoError:36864},HL={1:"U2F: Unknown",2:"U2F: Bad request",3:"U2F: Configuration unsupported",4:"U2F: Device Ineligible",5:"U2F: Timeout",14:"Timeout",25600:"Execution Error",26368:"Wrong Length",26626:"Error deriving keys",27010:"Empty Buffer",27011:"Output buffer too small",27012:"Data is invalid",27013:"Conditions not satisfied",27014:"Transaction rejected",27264:"Bad key handle",27392:"Invalid P1/P2",27904:"Instruction not supported",28160:"App does not seem to be open",28416:"Unknown error",28417:"Sign/verify error",36864:"No errors",36865:"Device is busy"};function K(L){if(L in HL)return HL[L];return`Unknown Status Code: ${L}`}function D0(L){return typeof L==="object"&&L!==null&&!Array.isArray(L)&&!(L instanceof Date)}function S(L){if(L){if(D0(L)){if(Object.hasOwn(L,"statusCode"))return{error_message:K(L.statusCode),return_code:L.statusCode};if(Object.hasOwn(L,"return_code")&&Object.hasOwn(L,"error_message"))return L}return{error_message:L.toString(),return_code:65535}}return{error_message:L.toString(),return_code:65535}}function WL(L){return L.send(85,h.GET_VERSION,0,0).then((_)=>{let y=_.slice(-2),T=y[0]*256+y[1],w=0;if(_.length>=9)w=(_[5]<<24)+(_[6]<<16)+(_[7]<<8)+(_[8]<<0);return{device_locked:_[4]===1,error_message:K(T),major:_[1],minor:_[2],patch:_[3],return_code:T,target_id:w.toString(16),test_mode:_[0]!==0}},S)}var _L=require("@swapkit/helpers");function cL(L){if(L==null||L.length<3)throw new _L.SwapKitError("wallet_ledger_invalid_params",{reason:"Path too short"});if(L.length>10)throw new _L.SwapKitError("wallet_ledger_invalid_params",{reason:"Path too long"});let _=Buffer.alloc(1+4*L.length);_.writeUInt8(L.length,0);for(let y=0;y<L.length;y+=1){let T=L[y]||0;if(y<3)T|=2147483648;_.writeInt32LE(T,1+y*4)}return _}function $L(L,_,y,T,w=n.JSON){return L.transport.send(i,h.SIGN_SECP256K1,_,w,T,[E.NoError,27012,27264]).then((R)=>{let O=R.slice(-2),G=O[0]*256+O[1],X=K(G);if(G===27264||G===27012)X=`${X} : ${R.slice(0,R.length-2).toString("ascii")}`;let C=null;if(R.length>2)C=R.slice(0,R.length-2);return{error_message:X,return_code:G,signature:C}},S)}function F0(L){if(L.length!==65)throw new _L.SwapKitError("wallet_ledger_invalid_params",{reason:"decompressed public key length should be 65 bytes"});let _=L.slice(33,65),y=Buffer.from([2+(_[_.length-1]&1)]);return Buffer.concat([y,L.slice(1,33)])}function qL(L,_){return L.transport.send(i,h.INS_PUBLIC_KEY_SECP256K1,0,0,_,[E.NoError]).then((y)=>{let T=y.slice(-2),w=T[0]*256+T[1],R=Buffer.from(y.slice(0,65));return{compressed_pk:F0(R),error_message:K(w),pk:R,return_code:w}},S)}function SL(L){if(!L||L.length!==5)throw new _L.SwapKitError("wallet_ledger_invalid_params",{reason:"Path must be exactly 5 elements"});let _=Buffer.alloc(20);return _.writeUInt32LE(2147483648+L[0],0),_.writeUInt32LE(2147483648+L[1],4),_.writeUInt32LE(2147483648+L[2],8),_.writeUInt32LE(L[3],12),_.writeUInt32LE(L[4],16),_}function PL(L,_,y,T,w=n.JSON){let R=XL.ADD;if(_===1)R=XL.INIT;if(_===y)R=XL.LAST;return $L(L,R,0,T,w)}function zL(L,_){return L.transport.send(i,h.GET_ADDR_SECP256K1,0,0,_,[E.NoError]).then((y)=>{let T=y.slice(-2),w=T[0]*256+T[1];return{compressed_pk:Buffer.from(y.slice(0,33)),error_message:K(w),pk:"OBSOLETE PROPERTY",return_code:w}},S)}class yL{transport;versionResponse;constructor(L){if(!L)throw new JL.SwapKitError("wallet_ledger_transport_not_defined");this.transport=L}static serializeHRP(L){if(L==null||L.length<3||L.length>83)throw new JL.SwapKitError("wallet_ledger_invalid_params",{reason:"Invalid HRP"});let _=Buffer.alloc(1+L.length);return _.writeUInt8(L.length,0),_.write(L,1),_}async serializePath(L){if(this.versionResponse=await WL(this.transport),this.versionResponse.return_code!==E.NoError)throw this.versionResponse;switch(this.versionResponse.major){case 1:return cL(L);case 2:return SL(L);default:return Buffer.alloc(0)}}async signGetChunks(L,_){let y=await this.serializePath(L),T=[];T.push(y);for(let w=0;w<_.length;w+=jL){let R=w+jL;if(w>_.length)R=_.length;T.push(_.slice(w,R))}return T}async getVersion(){try{return this.versionResponse=await WL(this.transport),this.versionResponse}catch(L){return S(L)}}appInfo(){return this.transport.send(176,1,0,0).then((L)=>{let _=L.readUInt16BE(L.length-2),y="",T="",w=0,R=0;if(L[0]!==1)return{error_message:"response format ID not recognized",return_code:36865};let O=L[1];y=L.slice(2,2+O).toString("ascii");let G=2+O,X=L[G];G+=1,T=L.slice(G,G+X).toString("ascii"),G+=X;let C=L[G];return G+=1,w=C,R=L[G],{appName:y,appVersion:T,error_message:K(_),flag_onboarded:(R&4)!==0,flag_pin_validated:(R&128)!==0,flag_recovery:(R&1)!==0,flag_signed_mcu_code:(R&2)!==0,flagLen:w,flagsValue:R,return_code:_}},S)}deviceInfo(){return this.transport.send(224,1,0,0,Buffer.from([]),[E.NoError,28160]).then((L)=>{let _=L.slice(-2),y=_[0]*256+_[1];if(y===28160)return{error_message:"This command is only available in the Dashboard",return_code:y};let T=L.slice(0,4).toString("hex"),w=4,R=L[w];w+=1;let O=L.slice(w,w+R).toString();w+=R;let G=L[w];w+=1;let X=L.slice(w,w+G).toString("hex");w+=G;let C=L[w];w+=1;let B=L.slice(w,w+C);if(B[C-1]===0)B=L.slice(w,w+C-1);let D=B.toString();return{error_message:K(y),flag:X,mcuVersion:D,return_code:y,seVersion:O,targetId:T}},S)}async publicKey(L){try{let _=await this.serializePath(L);switch(this.versionResponse.major){case 1:return qL(this,_);case 2:{let y=Buffer.concat([yL.serializeHRP("thor"),_]);return zL(this,y)}default:return{error_message:"App Version is not supported",return_code:25600}}}catch(_){return S(_)}}async getAddressAndPubKey(L,_,y=!1){try{let T=await this.serializePath(L),w=Buffer.concat([yL.serializeHRP(_),T]),R=await this.transport.send(i,h.GET_ADDR_SECP256K1,y?AL.SHOW_ADDRESS_IN_DEVICE:AL.ONLY_RETRIEVE,0,w,[E.NoError]),O=Buffer.from(R.slice(0,33)),G=Buffer.from(R.slice(33,-2)).toString(),X=R.readUInt16BE(R.length-2);return{bech32_address:G,compressed_pk:O,error_message:K(X),return_code:X}}catch(T){return S(T)}}showAddressAndPubKey(L,_){return this.getAddressAndPubKey(L,_,!0)}signSendChunk(L,_,y,T=n.JSON){switch(this.versionResponse.major){case 1:return $L(this,L,_,y,T);case 2:return PL(this,L,_,y,T);default:return{error_message:"App Version is not supported",return_code:25600}}}async sign(L,_,y=n.JSON){let T=Buffer.from(_),w=[],R;try{w=await this.signGetChunks(L,T),R=await this.signSendChunk(1,w.length,w[0],y)}catch(G){S(G)}let O={error_message:R.error_message,return_code:R.return_code,signature:null};for(let G=1;G<w.length;G+=1)if(O=await this.signSendChunk(1+G,w.length,w[G],y),O.return_code!==E.NoError)break;return{error_message:O.error_message,return_code:O.return_code,signature:O.signature}}}class wL{ledgerTimeout=50000;derivationPath=g.NetworkDerivationPath.GAIA;transport;ledgerApp;chain="thor";checkOrCreateTransportAndLedger=async(L=!1)=>{if(!L&&this.transport&&this.ledgerApp)return;try{switch(this.transport=L||!this.transport?await Y():this.transport,this.chain){case"thor":{this.ledgerApp=L||!this.ledgerApp?new yL(this.transport):this.ledgerApp;break}case"cosmos":{let _=(await import("@ledgerhq/hw-app-cosmos")).default;this.ledgerApp=L||!this.ledgerApp?new _(this.transport):this.ledgerApp}}return this.ledgerApp}catch(_){throw new g.SwapKitError("wallet_ledger_connection_error",_)}};validateResponse=(L,_)=>{switch(L){case g.LedgerErrorCode.NoError:return;case g.LedgerErrorCode.LockedDevice:throw new g.SwapKitError("wallet_ledger_device_locked",{message:`Ledger is locked: ${_}`});case g.LedgerErrorCode.TC_NotFound:throw new g.SwapKitError("wallet_ledger_device_not_found");default:break}}}class UL extends wL{pubKey=null;derivationPath;constructor(L=o.NetworkDerivationPath.GAIA){super();this.chain="cosmos",this.derivationPath=o.derivationPathToString(L)}connect=async()=>{await this.checkOrCreateTransportAndLedger(!0);let{publicKey:L,address:_}=await this.getAddressAndPubKey();return this.pubKey=Buffer.from(L,"hex").toString("base64"),_};getAddressAndPubKey=async()=>{return await this.checkOrCreateTransportAndLedger(!0),await this.ledgerApp.getAddress(this.derivationPath,this.chain)};signTransaction=async(L,_="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:y,error_message:T,signature:w}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new o.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(y,T),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:_,signature:w}]};signAmino=async(L,_)=>{await this.checkOrCreateTransportAndLedger(!0);let y=await this.getAccounts();if(y.findIndex((W)=>W.address===L)===-1)throw new o.SwapKitError("wallet_ledger_address_not_found",{address:L});let w=await import("@cosmjs/amino"),R=w.encodeSecp256k1Signature??w.default?.encodeSecp256k1Signature,O=w.serializeSignDoc??w.default?.serializeSignDoc,G=await import("@cosmjs/crypto"),X=G.Secp256k1Signature??G.default?.Secp256k1Signature,C=O(_),B=await this.ledgerApp.sign(this.derivationPath,C);this.validateResponse(B.return_code,B.error_message);let D=X.fromDer(B.signature).toFixedLength();return{signature:R(y[0].pubkey,D),signed:_}};getAccounts=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.getAddressAndPubKey();return[{address:L.address,algo:"secp256k1",pubkey:Buffer.from(L.publicKey,"hex")}]}}var $=require("@swapkit/helpers"),KL=require("ethers");class q extends KL.AbstractSigner{chainId=$.ChainId.Ethereum;derivationPath="";ledgerApp=null;ledgerTimeout=50000;constructor({provider:L,derivationPath:_=$.NetworkDerivationPath.OP,chainId:y=$.ChainId.Optimism}){super(L);this.chainId=y||$.ChainId.Ethereum,this.derivationPath=typeof _==="string"?_:$.derivationPathToString(_),Object.defineProperty(this,"provider",{enumerable:!0,value:L||null,writable:!1})}connect=(L)=>new q({chainId:this.chainId,derivationPath:this.derivationPath,provider:L});checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let L=await Y(),_=(await import("@ledgerhq/hw-app-eth")).default;this.ledgerApp=new _(L)};getAddress=async()=>{let L=await this.getAddressAndPubKey();if(!L)throw new $.SwapKitError("wallet_ledger_failed_to_get_address");return L.address};getAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath)};showAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath,!0)};signMessage=async(L)=>{let{Signature:_}=await import("ethers");await this.createTransportAndLedger();let y=await this.ledgerApp?.signPersonalMessage(this.derivationPath,L);if(!y)throw new $.SwapKitError("wallet_ledger_signing_error");return y.r=`0x${y.r}`,y.s=`0x${y.s}`,_.from(y).serialized};sendTransaction=async(L)=>{if(!this.provider)throw new $.SwapKitError("wallet_ledger_no_provider");let _=await this.signTransaction(L);return await this.provider.broadcastTransaction(_)};signTypedData=async(L,_,y,T)=>{let{buildEIP712DomainType:w}=await import("@swapkit/toolboxes/evm"),{Signature:R,TypedDataEncoder:O}=await import("ethers");await this.createTransportAndLedger();let{EIP712Domain:G,...X}=_,C=T??O.from(X).primaryType,B;try{B=await this.ledgerApp?.signEIP712Message(this.derivationPath,{domain:L,message:y,primaryType:C,types:{EIP712Domain:w(L),...X}})}catch(D){let W=D instanceof Error&&"statusCode"in D;if(!W||W&&D.statusCode===27013)throw D;let Q=O.hashDomain(L).slice(2),Z=O.from(X).hash(y).slice(2);B=await this.ledgerApp?.signEIP712HashedMessage(this.derivationPath,Q,Z)}if(!B)throw new $.SwapKitError("wallet_ledger_signing_error");return B.r=`0x${B.r}`,B.s=`0x${B.s}`,R.from(B).serialized};signTransaction=async(L)=>{let{Transaction:_}=await import("ethers");await this.createTransportAndLedger();let y=await this.provider?.getTransactionCount(L.from||await this.getAddress()),T={chainId:L.chainId||this.chainId,data:L.data,gasLimit:L.gasLimit,...L.gasPrice&&{gasPrice:L.gasPrice},...!L.gasPrice&&L.maxFeePerGas&&{maxFeePerGas:L.maxFeePerGas,maxPriorityFeePerGas:L.maxPriorityFeePerGas},nonce:L.nonce!==void 0?Number((L.nonce||y||0).toString()):y,to:L.to?.toString(),type:L.type&&!Number.isNaN(L.type)?L.type:L.maxFeePerGas?2:0,value:L.value},w=_.from(T).unsignedSerialized.slice(2),{ledgerService:R}=await import("@ledgerhq/hw-app-eth"),O=await R.resolveTransaction(w,{},{erc20:!0,externalPlugins:!0}),G=await this.ledgerApp?.signTransaction(this.derivationPath,w,O);if(!G)throw new $.SwapKitError("wallet_ledger_signing_error");let{r:X,s:C,v:B}=G;return _.from({...T,signature:{r:`0x${X}`,s:`0x${C}`,v:Number(BigInt(B))}}).serialized}}var gL=(L)=>new q({...L,chainId:$.ChainId.Arbitrum}),kL=(L)=>new q({...L,chainId:$.ChainId.Aurora}),lL=(L)=>new q({...L,chainId:$.ChainId.Avalanche}),VL=(L)=>new q({...L,chainId:$.ChainId.Base}),EL=(L)=>new q({...L,chainId:$.ChainId.Ethereum}),IL=(L)=>new q({...L,chainId:$.ChainId.Gnosis}),vL=(L)=>new q({...L,chainId:$.ChainId.Optimism}),hL=(L)=>new q({...L,chainId:$.ChainId.Polygon}),oL=(L)=>new q({...L,chainId:$.ChainId.BinanceSmartChain}),dL=(L)=>new q({...L,chainId:$.ChainId.Monad}),bL=(L)=>new q({...L,chainId:$.ChainId.XLayer}),xL=(L)=>new q({...L,chainId:$.ChainId.Berachain});async function iL(L){let _=(await import("@ledgerhq/hw-app-near")).default,{Chain:y,NetworkDerivationPath:T,SwapKitError:w}=await import("@swapkit/helpers"),R=await Y(),O=new _(R),G=(L||T[y.Near]).join("'/").concat("'"),{address:X,publicKey:C}=await O.getAddress(G);return{getAddress(){return Promise.resolve(X)},async getPublicKey(){let{PublicKey:D}=await import("@near-js/crypto");return D.fromString(`ed25519:${C}`)},signDelegateAction(D){return Promise.reject(new w("wallet_ledger_method_not_supported",{method:"signDelegateAction",wallet:"Ledger"}))},signNep413Message(D,W,Q,Z,F){return Promise.reject(new w("wallet_ledger_method_not_supported",{method:"signNep413Message",wallet:"Ledger"}))},async signTransaction(D){let{Signature:W,SignedTransaction:Q}=await import("@near-js/transactions");try{let Z=await O.signTransaction(D.encode(),G);if(!Z)throw Error("Signature undefined");let F=new W({data:Z,keyType:0}),J=new Q({signature:F,transaction:D});return[Z,J]}catch(Z){throw new w("wallet_ledger_signing_error",{error:Z})}}}}var H=require("@swapkit/helpers");class nL{derivationPath;ledgerApp=null;address=null;publicKey=null;constructor(L){this.derivationPath=typeof L==="string"?L:H.derivationPathToString(L||H.NetworkDerivationPath[H.Chain.Sui])}getLedgerPath(){return this.derivationPath.replace(/^m\//,"").replace(/\/(\d+)\/(\d+)$/,"/$1'/$2'")}async createTransportAndLedger(){if(this.ledgerApp)return;let L=await Y(),_=(await import("@ledgerhq/hw-app-sui")).default;this.ledgerApp=new _(L)}async connect(){if(await this.createTransportAndLedger(),!this.ledgerApp)throw new H.SwapKitError("wallet_ledger_transport_error");let L=this.getLedgerPath(),_=await this.ledgerApp.getPublicKey(L);if(!_?.publicKey)throw new H.SwapKitError("wallet_ledger_failed_to_get_address");return this.publicKey=_.publicKey,this.address=`0x${Buffer.from(_.address).toString("hex")}`,this.address}toSuiAddress(){if(!this.address)throw new H.SwapKitError("wallet_ledger_failed_to_get_address");return this.address}async getAddress(){if(this.address)return this.address;return await this.connect()}async signTransaction(L){let _=L instanceof Uint8Array?L:L.transaction;if(await this.createTransportAndLedger(),!this.ledgerApp)throw new H.SwapKitError("wallet_ledger_transport_error");if(!this.publicKey)throw new H.SwapKitError("wallet_ledger_failed_to_get_address");try{let y=this.getLedgerPath(),T=new Uint8Array(3+_.length);T[0]=0,T[1]=0,T[2]=0,T.set(_,3);let w=await this.ledgerApp.signTransaction(y,T);if(!w?.signature)throw new H.SwapKitError("wallet_ledger_signing_error");let R=this.publicKey.length===33?this.publicKey.slice(1):this.publicKey;if(R.length!==32)throw new H.SwapKitError("wallet_ledger_signing_error",{error:"Invalid public key length"});let O=new Uint8Array(97);O[0]=0,O.set(w.signature,1),O.set(R,65);let G=Buffer.from(O).toString("base64");return{bytes:Buffer.from(_).toString("base64"),signature:G}}catch(y){throw new H.SwapKitError("wallet_ledger_signing_error",{error:y})}}}var tL=(L)=>new nL(L);var eL=require("@scure/base"),TL=require("@swapkit/helpers");var uL=require("@scure/base"),k=require("@swapkit/helpers"),ZL=(L)=>{if(L.length<64)throw new k.SwapKitError("wallet_ledger_invalid_signature",{reason:"Too short"});if(L[0]!==48)throw new k.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected first byte 0x30"});if(L[1]+2!==L.length)throw new k.SwapKitError("wallet_ledger_invalid_signature",{reason:"signature length does not match TLV"});if(L[2]!==2)throw new k.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02"});let _=L[3],y=L.slice(4,_+4);if(y.length===33&&y[0]===0)y=y.slice(1,33);else if(y.length===33)throw new k.SwapKitError("wallet_ledger_invalid_signature",{reason:"r too long"});while(y.length<32)y.unshift(0);if(L[_+4]!==2)throw new k.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02 for s"});let T=L[_+5];if(4+_+2+T!==L.length)throw new k.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV byte lengths do not match message length"});let w=L.slice(_+6,L.length);if(w.length===33&&w[0]===0)w=w.slice(1,33);else if(w.length===33)throw new k.SwapKitError("wallet_ledger_invalid_signature",{reason:"s too long"});while(w.length<32)w.unshift(0);if(y.length!==32||w.length!==32)throw new k.SwapKitError("wallet_ledger_invalid_signature",{reason:"must be 32 bytes each"});return uL.base64.encode(Buffer.concat([y,w]))};class ML extends wL{pubKey=null;derivationPath;constructor(L=TL.NetworkDerivationPath.THOR){super();this.chain="thor",this.derivationPath=L}get pubkey(){return this.pubKey}connect=async()=>{await this.checkOrCreateTransportAndLedger();let{compressed_pk:L,bech32_address:_}=await this.getAddressAndPubKey();return this.pubKey=eL.base64.encode(L),_};getAddressAndPubKey=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.ledgerApp.getAddressAndPubKey(this.derivationPath,this.chain);return this.validateResponse(L.return_code,L.error_message),L};showAddressAndPubKey=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.ledgerApp.showAddressAndPubKey(this.derivationPath,this.chain);return this.validateResponse(L.return_code,L.error_message),L};signTransaction=async(L,_="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:y,error_message:T,signature:w}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new TL.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(y,T),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:_,signature:ZL(w)}]};sign=async(L)=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:_,error_message:y,signature:T}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new TL.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(_,y),ZL(T)}}var l=require("@swapkit/helpers");class pL{derivationPath;ledgerApp=null;ledgerTimeout=50000;constructor(L){this.derivationPath=typeof L==="string"?L:l.derivationPathToString(L||l.NetworkDerivationPath.TRON)}checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let L=await Y(),_=(await import("@ledgerhq/hw-app-trx")).default;this.ledgerApp=new _(L)};getAddress=async()=>{let L=await this.getAddressAndPubKey();if(!L)throw new l.SwapKitError("wallet_ledger_failed_to_get_address");return L.address};getAddressAndPubKey=async()=>{await this.createTransportAndLedger();let L=await this.ledgerApp?.getAddress(this.derivationPath);if(!L)throw new l.SwapKitError("wallet_ledger_failed_to_get_address");return{address:L.address,publicKey:L.publicKey}};showAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath,!0)};signTransaction=async(L)=>{if(await this.createTransportAndLedger(),!this.ledgerApp)throw new l.SwapKitError("wallet_ledger_transport_error");let _=JSON.stringify(L);try{let y=await this.ledgerApp.signTransaction(this.derivationPath,_,[]);if(!y)throw new l.SwapKitError("wallet_ledger_signing_error");return{...L,signature:[y]}}catch(y){throw new l.SwapKitError("wallet_ledger_signing_error",{error:y})}}}var aL=(L)=>new pL(L);var mL=require("@scure/base"),I=require("@swapkit/helpers");var sL=["bitcoin-cash","dash","dogecoin","zcash"],rL=({tx:L,inputUtxos:_,btcApp:y,derivationPath:T,chain:w},R)=>{let O=_.map((D)=>{return[y.splitTransaction(D.txHex||"",!sL.includes(w),w==="zcash"),D.index,void 0,void 0]}),G=mL.hex.encode(L.unsignedTx),X=y.splitTransaction(G,!0),C=y.serializeTransactionOutputs(X).toString("hex"),B={additionals:["bech32"],associatedKeysets:O.map(()=>T),inputs:O,outputScriptHex:C,segwit:!0,useTrustedInputForSegwit:!0};return y.createPaymentTransaction({...B,...R})},f0=({tx:L,inputUtxos:_,btcApp:y,derivationPaths:T,chain:w},R)=>{if(T.length!==_.length)throw new I.SwapKitError("wallet_ledger_invalid_params",{message:`Derivation paths count (${T.length}) must match inputs count (${_.length})`});let O=_.map((D)=>{return[y.splitTransaction(D.txHex||"",!sL.includes(w),w==="zcash"),D.index,void 0,void 0]}),G=mL.hex.encode(L.unsignedTx),X=y.splitTransaction(G,!0),C=y.serializeTransactionOutputs(X).toString("hex"),B={additionals:["bech32"],associatedKeysets:T,inputs:O,outputScriptHex:C,segwit:!0,useTrustedInputForSegwit:!0};return y.createPaymentTransaction({...B,...R})},t=({chain:L,additionalSignParams:_})=>{let y,T=null;async function w(O=!0){if(O&&!y)new I.SwapKitError("wallet_ledger_connection_error",{message:`Ledger connection failed:
|
|
2
|
+
${JSON.stringify({btcApp:y,checkBtcApp:O})}`});T||=await Y()}async function R(){T=await Y(),y=new(await import("@ledgerhq/hw-app-btc")).default({currency:L,transport:T})}return(O)=>{let G=typeof O==="string"?O:I.derivationPathToString(O),X=I.getWalletFormatFor(G);return{connect:async()=>{await w(!1),y=new(await import("@ledgerhq/hw-app-btc")).default({currency:L,transport:T})},getAddress:async()=>{let{toCashAddress:C}=await import("@swapkit/toolboxes/utxo");await w(!1);let{bitcoinAddress:B}=await y.getWalletPublicKey(G,{format:X});if(!B)throw new I.SwapKitError("wallet_ledger_get_address_error",{message:`Cannot get ${L} address from ledger derivation path: ${G}`});return L==="bitcoin-cash"&&X==="legacy"?C(B).replace(/(bchtest:|bitcoincash:)/,""):B},getExtendedPublicKey:async(C="84'/0'/0'",B=76067358)=>{return await w(!1),y.getWalletXpub({path:C,xpubVersion:B})},signPCZT:async(C)=>{if(L!=="zcash")throw new I.SwapKitError("wallet_ledger_chain_not_supported",{message:"PCZT signing is only supported for Zcash"});await R();let{ZcashTransaction:B,Script:D}=await import("@swapkit/utxo-signer"),W=C.getGlobal(),Q=new B({consensusBranchId:W.consensusBranchId,expiryHeight:W.expiryHeight,lockTime:W.lockTime,version:W.txVersion,versionGroupId:W.versionGroupId}),Z=[];for(let f=0;f<C.inputsLength;f++){let A=C.getInput(f);Q.addInput({index:A.index,script:new Uint8Array,sequence:A.sequence??4294967295,txid:A.txid,value:A.value}),Z.push({hash:mL.hex.encode(new Uint8Array([...A.txid].reverse())),index:A.index,txHex:j0(A,W),value:Number(A.value),witnessUtxo:{script:A.scriptPubkey,value:Number(A.value)}})}for(let f=0;f<C.outputsLength;f++){let A=C.getOutput(f);Q.addOutput({amount:A.value,script:A.scriptPubkey})}let F=await rL({btcApp:y,chain:L,derivationPath:G,inputUtxos:Z,tx:Q},{..._,expiryHeight:(()=>{let f=Buffer.alloc(4);return f.writeUInt32LE(W.expiryHeight),f})(),lockTime:W.lockTime}),J=B.fromHex(F,{allowUnknownOutputs:!0}),U=C.clone();for(let f=0;f<J.inputsLength;f++){let A=J.getInput(f);if(A.script&&A.script.length>0){let c=D.decode(A.script);if(c.length>=2)U.addSignature(f,c[1],c[0])}}return U},signTransaction:async(C,B)=>{return await R(),rL({btcApp:y,chain:L,derivationPath:G,inputUtxos:B,tx:C},_)},signTransactionWithMultiplePaths:async(C,B,D)=>{return await R(),f0({btcApp:y,chain:L,derivationPaths:D,inputUtxos:B,tx:C},_)}}}};function j0(L,_){let y=[],T=(_.txVersion|2147483648)>>>0;y.push(T&255,T>>8&255,T>>16&255,T>>24&255);let w=_.versionGroupId;y.push(w&255,w>>8&255,w>>16&255,w>>24&255),y.push(0);let R=L.index+1;if(R<253)y.push(R);else y.push(253,R&255,R>>8&255);for(let X=0;X<L.index;X++)y.push(0,0,0,0,0,0,0,0),y.push(0);let O=L.value;y.push(Number(O&0xffn),Number(O>>8n&0xffn),Number(O>>16n&0xffn),Number(O>>24n&0xffn),Number(O>>32n&0xffn),Number(O>>40n&0xffn),Number(O>>48n&0xffn),Number(O>>56n&0xffn));let G=L.scriptPubkey;if(G.length<253)y.push(G.length);else y.push(253,G.length&255,G.length>>8&255);for(let X of G)y.push(X);return y.push(_.lockTime&255,_.lockTime>>8&255,_.lockTime>>16&255,_.lockTime>>24&255),y.push(_.expiryHeight&255,_.expiryHeight>>8&255,_.expiryHeight>>16&255,_.expiryHeight>>24&255),y.push(0,0,0,0,0,0,0,0),y.push(0),y.push(0),y.push(0),mL.hex.encode(new Uint8Array(y))}var L0=t({chain:"bitcoin"}),_0=t({chain:"litecoin"}),y0=t({additionalSignParams:{additionals:["abc"],segwit:!1,sigHashType:65},chain:"bitcoin-cash"}),w0=t({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dogecoin"}),T0=t({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dash"}),m0=t({additionalSignParams:{additionals:["zcash","sapling"],expiryHeight:(()=>{let L=Buffer.alloc(4);return L.writeUInt32LE(0),L})(),lockTime:0,segwit:!1,useTrustedInputForSegwit:!1},chain:"zcash"});var R0=A0(require("@ledgerhq/hw-app-xrp")),u=require("@swapkit/helpers"),QL=require("ripple-binary-codec");var W0=2147483648;function $0(L){let _={};for(let y in L)if(L[y]!==null&&L[y]!==void 0)_[y]=L[y];return _}function J0(L){return new R0.default(L)}var O0=async(L)=>{let _=u.derivationPathToString(L||u.NetworkDerivationPath[u.Chain.Ripple]),y=await Y(),T=J0(y),{address:w,publicKey:R}=await T.getAddress(_);async function O(G){let{hashes:X}=await import("@swapkit/toolboxes/ripple"),B={...$0(G),Flags:G.Flags||W0,SigningPubKey:R.toUpperCase()},D=QL.encode(B),W=await T.signTransaction(_,D),Q=QL.encode({...B,TxnSignature:W});return{hash:X.hashSignedTx(Q),tx_blob:Q}}return{getAddress:()=>w,signTransaction:O}};var P=async({chain:L,derivationPath:_})=>{let{match:y}=await import("ts-pattern");return y(L).returnType().with(N.Chain.THORChain,()=>Promise.resolve(new ML(_))).with(N.Chain.Cosmos,()=>Promise.resolve(new UL(_))).with(N.Chain.Bitcoin,()=>Promise.resolve(L0(_))).with(N.Chain.BitcoinCash,()=>Promise.resolve(y0(_))).with(N.Chain.Dash,()=>Promise.resolve(T0(_))).with(N.Chain.Dogecoin,()=>Promise.resolve(w0(_))).with(N.Chain.Litecoin,()=>Promise.resolve(_0(_))).with(N.Chain.Zcash,()=>Promise.resolve(m0(_))).with(N.Chain.Ripple,()=>Promise.resolve(O0(_))).with(N.Chain.Tron,()=>Promise.resolve(aL(_))).with(N.Chain.Sui,()=>Promise.resolve(tL(_))).with(N.Chain.Near,()=>{return Promise.resolve(iL(_))}).with(N.Chain.Arbitrum,N.Chain.Aurora,N.Chain.Avalanche,N.Chain.Berachain,N.Chain.BinanceSmartChain,N.Chain.Ethereum,N.Chain.Gnosis,N.Chain.Monad,N.Chain.Optimism,N.Chain.Polygon,N.Chain.Base,N.Chain.XLayer,async()=>{let{getProvider:T}=await import("@swapkit/toolboxes/evm"),w={derivationPath:_,provider:await T(L)};return y(L).with(N.Chain.BinanceSmartChain,()=>oL(w)).with(N.Chain.Avalanche,()=>lL(w)).with(N.Chain.Arbitrum,()=>gL(w)).with(N.Chain.Berachain,()=>xL(w)).with(N.Chain.Optimism,()=>vL(w)).with(N.Chain.Polygon,()=>hL(w)).with(N.Chain.Base,()=>VL(w)).with(N.Chain.Aurora,()=>kL(w)).with(N.Chain.Gnosis,()=>IL(w)).with(N.Chain.Monad,()=>dL(w)).with(N.Chain.XLayer,()=>bL(w)).otherwise(()=>EL(w))}).otherwise(()=>{throw new N.SwapKitError("wallet_chain_not_supported",{chain:L,wallet:N.WalletOption.LEDGER})})};var G0=DL.createWallet({connect:({addChain:L,supportedChains:_,walletType:y})=>async function(w,R){let[O]=m.filterSupportedChains({chains:w,supportedChains:_,walletType:y});if(!O)return!1;let G=R??m.NetworkDerivationPath[O],X=await H0({chain:O,derivationPath:G});return L({...X,chain:O,walletType:m.WalletOption.LEDGER}),!0},directSigningSupport:{[m.Chain.Arbitrum]:!0,[m.Chain.Aurora]:!0,[m.Chain.Avalanche]:!0,[m.Chain.Base]:!0,[m.Chain.Berachain]:!0,[m.Chain.BinanceSmartChain]:!0,[m.Chain.Ethereum]:!0,[m.Chain.Gnosis]:!0,[m.Chain.Monad]:!0,[m.Chain.Bitcoin]:!0,[m.Chain.BitcoinCash]:!0,[m.Chain.Cosmos]:!0,[m.Chain.Dash]:!0,[m.Chain.Dogecoin]:!0,[m.Chain.Litecoin]:!0,[m.Chain.Near]:!0,[m.Chain.Optimism]:!0,[m.Chain.Polygon]:!0,[m.Chain.Ripple]:!0,[m.Chain.Sui]:!0,[m.Chain.Tron]:!0,[m.Chain.XLayer]:!0},name:"connectLedger",supportedChains:[m.Chain.Arbitrum,m.Chain.Aurora,m.Chain.Avalanche,m.Chain.Base,m.Chain.Berachain,m.Chain.BinanceSmartChain,m.Chain.Bitcoin,m.Chain.BitcoinCash,m.Chain.Cosmos,m.Chain.Dash,m.Chain.Dogecoin,m.Chain.Ethereum,m.Chain.Gnosis,m.Chain.Litecoin,m.Chain.Monad,m.Chain.Near,m.Chain.Optimism,m.Chain.Polygon,m.Chain.Ripple,m.Chain.Sui,m.Chain.THORChain,m.Chain.XLayer,m.Chain.Tron,m.Chain.Zcash],walletType:m.WalletOption.LEDGER}),M0=DL.getWalletSupportedChains(G0);function Q0(L,_="t"){if(!L?.includes("=:"))return L;let y=L.includes(`:${_}:`)?L.split(`:${_}:`)[0]:L;return y?.substring(0,y.lastIndexOf(":"))}function NL(L){if(Array.isArray(L))return L.forEach((T,w)=>{L[w]=NL(T)}),L;if(typeof L!=="object")return L;let _={},y=Object.keys(L).sort();for(let T of y)_[T]=NL(L[T]);return _}function Y0(L){return JSON.stringify(NL(L))}async function H0({chain:L,derivationPath:_}){switch(L){case m.Chain.BitcoinCash:case m.Chain.Bitcoin:case m.Chain.Dash:case m.Chain.Dogecoin:case m.Chain.Litecoin:case m.Chain.Zcash:{let B=function(){return C()},{getUtxoToolbox:y}=await import("@swapkit/toolboxes/utxo"),T=L,w=await P({chain:L,derivationPath:_}),R=await V({chain:L,ledgerClient:w}),O;if(L===m.Chain.Bitcoin||L===m.Chain.Litecoin){let{BitcoinPsbtLedger:F,LitecoinPsbtLedger:J}=await import("../chunk-x85da57j.js"),U=L===m.Chain.Bitcoin?F(_):J(_);O={getAddress:U.getAddress,signTransaction:U.signTransaction}}else if(L===m.Chain.BitcoinCash||L===m.Chain.Dogecoin||L===m.Chain.Dash){let{createLegacyPsbtSigner:F}=await import("../chunk-mrsfcest.js");O=F({address:R,chain:T,legacyClient:w})}let G=O?await y(T,{signer:O}):y(T),X=async(F)=>{let J=F.feeRate||(await G.getFeeRates())[m.FeeOption.Average],U=[m.Chain.Bitcoin].includes(L)?F.memo:Q0(F.memo),{tx:f,inputs:A}=await G.createTransaction({...F,feeRate:J,fetchTxHex:!0,memo:U,sender:R}),c=await w.signTransaction(f,A);return await G.broadcastTx(c)};async function C({accountIndex:F}={}){if(!w.getExtendedPublicKey)return;let J=M.getUTXOAccountPath({accountIndex:F,chain:T,derivationPath:_}),U=m.derivationPathToString(J),f=L===m.Chain.Bitcoin||L===m.Chain.Litecoin?U:U.replace(/^m\//,""),A=await w.getExtendedPublicKey(f);return{accountIndex:M.getUTXOAccountIndexFromPath(J),path:U,xpub:A}}async function D({accountIndex:F,index:J,change:U=!1}){try{let f=M.getUTXOAddressPath({accountIndex:F,chain:T,change:U,derivationPath:_,index:J}),A=await P({chain:T,derivationPath:f}),c=await V({chain:T,ledgerClient:A});return{accountIndex:M.getUTXOAccountIndexFromPath(f),address:c,change:U,index:J,path:m.derivationPathToString(f),pubkey:""}}catch{return}}async function W({accountIndex:F,count:J,startIndex:U=0,change:f=!1}){return M.assertDerivationIndex("count",J),M.assertDerivationIndex("startIndex",U),(await Promise.all(Array.from({length:J},(c,v)=>D({accountIndex:F,change:f,index:U+v})))).filter((c)=>!!c)}let Q=M.createHDWalletHelpers({chain:T,deriveAddress:D,getBalance:G.getBalance,getUtxos:(F)=>M.getUtxoApi(T).getUtxos({address:F,fetchTxHex:!0})});async function Z({utxos:F,recipient:J,assetValue:U,memo:f,feeRate:A,feeOptionKey:c,changeAddress:v}){if(!F.length)throw new m.SwapKitError("wallet_ledger_invalid_params",{message:"No UTXOs provided for multi-address transfer"});let YL=A||(await G.getFeeRates())[c||m.FeeOption.Fast],RL=f?M.compileMemo(f):null,z=[{address:J,value:U.getBaseValue("number")}];if(RL)z.push({script:RL,value:0});let OL=F.map(({hash:b,index:x,value:r,txHex:s,witnessUtxo:LL})=>({hash:b,index:x,txHex:s,value:r,witnessUtxo:LL})),{inputs:d,outputs:e}=G.accumulative({chain:T,feeRate:YL,inputs:OL,outputs:z});if(!(d&&e))throw new m.SwapKitError("wallet_ledger_connection_error",{message:"Insufficient balance for multi-address transfer"});let{Transaction:FL}=await import("@swapkit/utxo-signer"),GL=new FL({allowLegacyWitnessUtxo:!0,version:1}),p=v||F[0]?.address||J;M.addInputsAndOutputs({chain:T,compiledMemo:RL,inputs:d,outputs:e,sender:p,tx:GL});let CL=M.getUTXOAccountPath({chain:T,derivationPath:_}),fL=d.map((b)=>{let x=F.find((BL)=>BL.hash===b.hash&&BL.index===b.index),r=x?.derivationIndex??0,s=x?.isChange??!1,LL=[...CL,Number(s),r];return m.derivationPathToString(LL)});if(!w.signTransactionWithMultiplePaths)throw new m.SwapKitError("wallet_ledger_method_not_supported",{method:"signTransactionWithMultiplePaths"});let a=await w.signTransactionWithMultiplePaths(GL,d,fL);return G.broadcastTx(a)}return{...G,...Q,address:R,deriveAddressAtIndex:D,deriveAddresses:W,getExtendedPublicKey:B,getExtendedPublicKeyInfo:C,transfer:X,transferFromMultipleAddresses:Z}}case m.Chain.Ethereum:case m.Chain.Avalanche:case m.Chain.Arbitrum:case m.Chain.Berachain:case m.Chain.Optimism:case m.Chain.Polygon:case m.Chain.BinanceSmartChain:case m.Chain.Base:case m.Chain.Aurora:case m.Chain.Gnosis:case m.Chain.Monad:case m.Chain.XLayer:{let{getEvmToolboxAsync:y}=await import("@swapkit/toolboxes/evm"),T=await P({chain:L,derivationPath:_}),w=await V({chain:L,ledgerClient:T});return{...await y(L,{signer:T}),address:w}}case m.Chain.Cosmos:{let{createSigningStargateClient:y,getMsgSendDenom:T,getCosmosToolbox:w}=await import("@swapkit/toolboxes/cosmos"),R=await P({chain:L,derivationPath:_}),O=await V({chain:L,ledgerClient:R});return{...await w(m.Chain.Cosmos,{signer:R}),address:O,transfer:async({assetValue:C,recipient:B,memo:D})=>{if(!C)throw new m.SwapKitError("wallet_ledger_invalid_asset");let W={amount:[{amount:C.getBaseValue("string"),denom:T(`u${C.symbol}`).toLowerCase()}],fromAddress:O,toAddress:B},Q=await m.getRPCUrl(L),Z=await y(Q,R,"0.007uatom"),{transactionHash:F}=await Z.signAndBroadcast(O,[{typeUrl:"/cosmos.bank.v1beta1.MsgSend",value:W}],2,D);return F}}}case m.Chain.THORChain:{let{SignMode:y}=await import("cosmjs-types/cosmos/tx/signing/v1beta1/signing.js"),{TxRaw:T}=await import("cosmjs-types/cosmos/tx/v1beta1/tx.js"),w=await import("@cosmjs/proto-signing"),R=w.encodePubkey??w.default?.encodePubkey,O=w.makeAuthInfoBytes??w.default?.makeAuthInfoBytes,{createStargateClient:G,buildEncodedTxBody:X,getCosmosToolbox:C,buildAminoMsg:B,getDefaultChainFee:D,fromBase64:W,parseAminoMessageForDirectSigning:Q}=await import("@swapkit/toolboxes/cosmos"),Z=C(L),F=await P({chain:L,derivationPath:_}),J=await V({chain:L,ledgerClient:F}),U=D(L),{pubkey:f,signTransaction:A,sign:c}=F,v=async({memo:z="",assetValue:OL,...d})=>{let e=await Z.getAccount(J);if(!e)throw new m.SwapKitError("wallet_ledger_invalid_account");if(!OL)throw new m.SwapKitError("wallet_ledger_invalid_asset");if(!f)throw new m.SwapKitError("wallet_ledger_pubkey_not_found");let{accountNumber:FL,sequence:GL}=e,p=(GL||0).toString(),CL=NL([B({assetValue:OL,memo:z,sender:J,...d})]),fL=Y0({account_number:FL?.toString(),chain_id:m.THORConfig.chainId,fee:U,memo:z,msgs:CL,sequence:p}),a=await A(fL,p);if(!a)throw new m.SwapKitError("wallet_ledger_signing_error");let b=R({type:"tendermint/PubKeySecp256k1",value:f}),x=CL.map(Q),r=await X({chain:L,memo:z,msgs:x}),s=O([{pubkey:b,sequence:Number(p)}],U.amount,Number.parseInt(U.gas,10),void 0,void 0,y.SIGN_MODE_LEGACY_AMINO_JSON),LL=a?.[0]?.signature?W(a[0].signature):Uint8Array.from([]),BL=T.fromPartial({authInfoBytes:s,bodyBytes:r,signatures:[LL]}),C0=T.encode(BL).finish(),B0=await m.getRPCUrl(m.Chain.THORChain),X0=await G(B0),{transactionHash:N0}=await X0.broadcastTx(C0);return N0};return{...Z,address:J,deposit:(z)=>v(z),signMessage:c,transfer:(z)=>v(z)}}case m.Chain.Near:{let{getNearToolbox:y}=await import("@swapkit/toolboxes/near"),T=await P({chain:L,derivationPath:_}),w=await T.getAddress();return{...y({signer:T}),address:w}}case m.Chain.Ripple:{let{getRippleToolbox:y}=await import("@swapkit/toolboxes/ripple"),T=await P({chain:L,derivationPath:_}),w=T.getAddress();return{...y({signer:T}),address:w}}case m.Chain.Tron:{let{getTronToolbox:y}=await import("@swapkit/toolboxes/tron"),T=await P({chain:L,derivationPath:_}),w=await V({chain:L,ledgerClient:T});return{...y({signer:T}),address:w}}case m.Chain.Sui:{let{getSuiToolbox:y}=await import("@swapkit/toolboxes/sui"),T=await P({chain:L,derivationPath:_}),w=await V({chain:L,ledgerClient:T});return{...y({signer:T}),address:w}}default:throw new m.SwapKitError("wallet_ledger_chain_not_supported",{chain:L})}}
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=ECB9CE3992D70D7C64756E2164756E21
|
|
5
5
|
//# sourceMappingURL=index.cjs.map
|