@swapkit/wallet-hardware 4.6.2 → 4.7.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.
Files changed (33) hide show
  1. package/dist/{chunk-1jpcb30j.js → chunk-25q3rr1d.js} +3 -3
  2. package/dist/{chunk-1jpcb30j.js.map → chunk-25q3rr1d.js.map} +1 -1
  3. package/dist/{chunk-1jexf7qt.js → chunk-7fsaymh4.js} +3 -3
  4. package/dist/{chunk-1jexf7qt.js.map → chunk-7fsaymh4.js.map} +1 -1
  5. package/dist/{chunk-skvfn1dg.js → chunk-e5bb5ftj.js} +3 -3
  6. package/dist/{chunk-skvfn1dg.js.map → chunk-e5bb5ftj.js.map} +1 -1
  7. package/dist/{chunk-ybje7f3s.js → chunk-w5xy6rdj.js} +3 -3
  8. package/dist/{chunk-ybje7f3s.js.map → chunk-w5xy6rdj.js.map} +1 -1
  9. package/dist/keepkey/index.cjs +2 -2
  10. package/dist/keepkey/index.cjs.map +3 -3
  11. package/dist/keepkey/index.js +2 -2
  12. package/dist/keepkey/index.js.map +3 -3
  13. package/dist/ledger/index.cjs +3 -3
  14. package/dist/ledger/index.cjs.map +3 -3
  15. package/dist/ledger/index.js +3 -3
  16. package/dist/ledger/index.js.map +3 -3
  17. package/dist/trezor/index.cjs +2 -2
  18. package/dist/trezor/index.cjs.map +3 -3
  19. package/dist/trezor/index.js +2 -2
  20. package/dist/trezor/index.js.map +3 -3
  21. package/dist/types/keepkey/index.d.ts +3 -2
  22. package/dist/types/keepkey/index.d.ts.map +1 -1
  23. package/dist/types/ledger/index.d.ts +3 -2
  24. package/dist/types/ledger/index.d.ts.map +1 -1
  25. package/dist/types/trezor/index.d.ts +3 -2
  26. package/dist/types/trezor/index.d.ts.map +1 -1
  27. package/package.json +5 -4
  28. package/dist/chunk-4fapcrj9.js +0 -5
  29. package/dist/chunk-4fapcrj9.js.map +0 -10
  30. package/dist/chunk-jj2v7mke.js +0 -4
  31. package/dist/chunk-jj2v7mke.js.map +0 -10
  32. package/dist/types/core.d.ts +0 -18
  33. package/dist/types/core.d.ts.map +0 -1
@@ -1,4 +1,4 @@
1
- import{a as u,b as l}from"../chunk-4fapcrj9.js";import{e as _}from"../chunk-1jpcb30j.js";import{Chain as B,derivationPathToString as x,FeeOption as m,filterSupportedChains as i,SKConfig as s,SwapKitError as P,WalletOption as f}from"@swapkit/helpers";import{createHDWalletHelpers as o,getNetworkForChain as h,getUtxoApi as a}from"@swapkit/toolboxes/utxo";import{NETWORKS as p,ZcashConsensusBranchId as n,ZcashVersionGroupId as t}from"@swapkit/utxo-signer";function d(j){if(j.length<2||j[0]!==106)return null;let Q=j[1];if(Q===void 0||j.length<2+Q)return null;return Buffer.from(j.slice(2,2+Q)).toString("hex")}function e(j){switch(j[0]){case 84:return{input:"SPENDWITNESS",output:"PAYTOWITNESS"};case 49:return{input:"SPENDP2SHWITNESS",output:"PAYTOP2SHWITNESS"};case 44:return{input:"SPENDADDRESS",output:"PAYTOADDRESS"};default:return null}}function y(j){return j.map((Q,Y)=>Y<3?(Q|2147483648)>>>0:Q)}function jj(j,Q,Y){let S=[];for(let U=0;U<j.inputsLength;U++){let q=j.getInput(U);S.push({address_n:Q,amount:q.value.toString(),prev_hash:Y.encode(new Uint8Array([...q.txid].reverse())),prev_index:q.index,script_type:"SPENDADDRESS"})}return S}async function qj(j,Q,Y,S){let U=[];for(let q=0;q<j.outputsLength;q++){let J=j.getOutput(q),L=J.scriptPubkey;if(J.value===0n&&L?.length>0&&L[0]===106){let G=d(L);if(G){U.push({amount:"0",op_return_data:G,script_type:"PAYTOOPRETURN"});continue}throw new P({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:S,error:"Malformed OP_RETURN output cannot be signed"}})}let E=await Bj(L);if(!E&&J.value>0n)throw new P({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:S,error:"Unable to decode output address from scriptPubkey"}});if(E===Y)U.push({address_n:Q,amount:J.value.toString(),script_type:"PAYTOADDRESS"});else U.push({address:E,amount:J.value.toString(),script_type:"PAYTOADDRESS"})}return U}async function Bj(j){try{let{OutScript:Q,Address:Y}=await import("@swapkit/utxo-signer"),S=Q.decode(j);if(S.type==="pkh"||S.type==="pk")return Y(p.zcash).encode(S)}catch{}return}async function Gj(j,Q){let{ZcashTransaction:Y,Script:S}=await import("@swapkit/utxo-signer"),U=Y.fromHex(j,{allowUnknownOutputs:!0}),q=Q.clone();for(let J=0;J<U.inputsLength;J++){let E=U.getInput(J).script;if(E&&E.length>0){let F=S.decode(E);if(F.length>=2)q.addSignature(J,F[1],F[0])}}return q}function Jj(j,Q,Y,S){let U=[];for(let q=0;q<j.inputsLength;q++){let J=j.getInput(q),L=Q[q];U.push({address_n:Y,amount:L?.value?.toString()||"0",prev_hash:J.txid?S.encode(new Uint8Array([...J.txid].reverse())):"",prev_index:J.index??0,script_type:"SPENDADDRESS"})}return U}function Lj(j,Q,Y,S){let U=[];for(let q=0;q<j.outputsLength;q++){let J=j.getOutput(q),L=j.getOutputAddress(q,p.zcash),E=J.script;if(J.amount===0n&&E?.length>0&&E[0]===106){let k=d(E);if(k){U.push({amount:"0",op_return_data:k,script_type:"PAYTOOPRETURN"});continue}continue}if(!L&&(J.amount??0n)>0n)throw new P({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:S,error:"Unable to decode output address"}});let G=L===Y||!L?{address_n:Q}:{address:L};U.push({...G,amount:J.amount?.toString()||"0",script_type:"PAYTOADDRESS"})}return U}function c(j,Q,Y,S,U,q,J,L,E){let F=[];for(let G=0;G<j.outputsLength;G++){let k=j.getOutput(G),W=j.getOutputAddress(G,Q);if(!W){F.push({amount:"0",op_return_data:Buffer.from(U).toString("hex"),script_type:"PAYTOOPRETURN"});continue}let M=q===B.BitcoinCash?E(L(W)):W,O=M===S;F.push(O?{address_n:Y,amount:Number(k.amount),script_type:J.output}:{address:M,amount:Number(k.amount),script_type:"PAYTOADDRESS"})}return F}async function Qj({chain:j,derivationPath:Q}){switch(j){case B.Arbitrum:case B.Aurora:case B.Avalanche:case B.Base:case B.Berachain:case B.BinanceSmartChain:case B.Ethereum:case B.Gnosis:case B.Monad:case B.Optimism:case B.Polygon:case B.XLayer:{let{getProvider:Y,getEvmToolboxAsync:S}=await import("@swapkit/toolboxes/evm"),{getEVMSigner:U}=await import("../chunk-skvfn1dg.js"),q=await Y(j),J=await U({chain:j,derivationPath:Q,provider:q}),L=await J.getAddress();return{...await S(j,{provider:q,signer:J}),address:L}}case B.Zcash:{let{getUtxoToolbox:Y}=await import("@swapkit/toolboxes/utxo"),S=x(Q),q=await(async()=>{let G=(await import("@trezor/connect-web")).default,{success:k,payload:W}=await G.getAddress({coin:"zcash",path:S});if(!k)throw new P({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:j,error:W.error||"Unknown error"}});return W.address})(),J={getAddress:async()=>q,signPCZT:async(G)=>{let k=(await import("@trezor/connect-web")).default,{hex:W}=await import("@scure/base"),M=y(Q),O=G.getGlobal(),A=jj(G,M,W),b=await qj(G,M,q,j),v=await k.signTransaction({branchId:O.consensusBranchId,coin:"zcash",expiry:O.expiryHeight,inputs:A,locktime:O.lockTime,outputs:b,overwintered:!0,version:O.txVersion,versionGroupId:O.versionGroupId});if(!v.success)throw new P({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:j,error:v.payload.error}});return Gj(v.payload.serializedTx,G)},signTransaction:async(G,k)=>{let W=(await import("@trezor/connect-web")).default,{hex:M}=await import("@scure/base"),O=y(Q),A=Jj(G,k,O,M),b=Lj(G,O,q,j),v=await W.signTransaction({branchId:n.NU6,coin:"zcash",expiry:0,inputs:A,locktime:0,outputs:b,overwintered:!0,version:4,versionGroupId:t.SAPLING});if(v.success)return v.payload.serializedTx;throw new P({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:j,error:v.payload.error}})}},L=Y(B.Zcash),E=async(G)=>{if(!(q&&G.recipient))throw new P({errorKey:"wallet_missing_params",info:{address:q,recipient:G.recipient,wallet:f.TREZOR}});let k=G.feeRate||(await L.getFeeRates())[G.feeOptionKey||m.Fast],{tx:W,inputs:M}=await L.createTransaction({...G,feeRate:k,fetchTxHex:!1,sender:q}),O=await J.signTransaction(W,M);return await L.broadcastTx(O)},F=async(G)=>{if(!(q&&G.recipient))throw new P({errorKey:"wallet_missing_params",info:{address:q,recipient:G.recipient,wallet:f.TREZOR}});let{createPCZT:k,OutScript:W}=await import("@swapkit/utxo-signer"),{hex:M}=await import("@scure/base"),{getUtxoApi:O}=await import("@swapkit/toolboxes/utxo"),A=G.feeRate||(await L.getFeeRates())[G.feeOptionKey||m.Fast],b=await O(B.Zcash).getUtxos({address:q}),{tx:v,inputs:$}=await L.createTransaction({...G,feeRate:A,fetchTxHex:!1,sender:q}),N=k();for(let Z of $){let D=b.find((H)=>H.hash===Z.hash&&H.index===Z.index),R=D?.witnessUtxo?.script?new Uint8Array(D.witnessUtxo.script):W.encode({hash:M.decode(Z.address||""),type:"pkh"});N.addInput({index:Z.index,scriptPubkey:R,txid:M.decode(Z.hash).reverse(),value:BigInt(Z.value)})}for(let Z=0;Z<v.outputsLength;Z++){let D=v.getOutput(Z);N.addOutput({scriptPubkey:D.script||new Uint8Array,value:D.amount||0n})}let X=await J.signPCZT(N);X.finalizeAllInputs();let V=X.extract();return await L.broadcastTx(V.toHex())};return{...L,address:q,signPCZT:J.signPCZT,signTransaction:J.signTransaction,transfer:E,transferWithPCZT:F}}case B.Bitcoin:case B.BitcoinCash:case B.Dash:case B.Dogecoin:case B.Litecoin:{let{toCashAddress:Y,getUtxoToolbox:S}=await import("@swapkit/toolboxes/utxo"),U=e(Q);if(!U)throw new P({errorKey:"wallet_trezor_derivation_path_not_supported",info:{derivationPath:Q}});let q=j.toLowerCase(),L=await(async($=Q)=>{let N=(await import("@trezor/connect-web")).default,{success:X,payload:V}=await N.getAddress({coin:q,path:x($)});if(!X)throw new P({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:j,error:V.error||"Unknown error"}});if(j===B.BitcoinCash)return(await S(j)).stripPrefix(V.address);return V.address})(),E=async($,N,X="")=>{let V=(await import("@trezor/connect-web")).default,w=y(Q),Z=S(j),D=h(j),R=c($,D,w,L,X,j,U,Y,Z.stripPrefix),H=await V.signTransaction({coin:q,inputs:N.map(({hash:K,index:z,value:I})=>({address_n:w,amount:I,prev_hash:K,prev_index:z,script_type:U.input})),outputs:R});if(H.success)return H.payload.serializedTx;throw new P({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:j,error:H.payload.error}})},F=async($,N,X="")=>{let V=(await import("@trezor/connect-web")).default,w=await S(j),Z=h(j),D=y(Q.slice(0,3)),R=c($,Z,D,L,X,j,U,Y,w.stripPrefix),H=N.map(({hash:z,index:I,value:C,derivationIndex:g,isChange:T})=>{let r=T?1:0;return{address_n:[...D,r,g],amount:C,prev_hash:z,prev_index:I,script_type:U.input}}),K=await V.signTransaction({coin:q,inputs:H,outputs:R});if(K.success)return K.payload.serializedTx;throw new P({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:j,error:K.payload.error}})},G=async({utxos:$,recipient:N,assetValue:X,memo:V,feeRate:w,feeOptionKey:Z})=>{let D=S(j),R=w||(await D.getFeeRates())[Z||m.Fast],{tx:H,inputs:K}=await D.createTransaction({assetValue:X,feeRate:R,fetchTxHex:!0,memo:V,recipient:N,sender:L}),z=K.map((C)=>{let g=$.find((T)=>T.hash===C.hash&&T.index===C.index);return{...C,derivationIndex:g?.derivationIndex??0,isChange:g?.isChange??!1}}),I=await F(H,z,V);return D.broadcastTx(I)},k=async({recipient:$,feeOptionKey:N,feeRate:X,memo:V,...w})=>{if(!(L&&$))throw new P({errorKey:"wallet_missing_params",info:{address:L,memo:V,recipient:$,wallet:f.TREZOR}});let Z=S(j),D=X||(await Z.getFeeRates())[N||m.Fast],R=Z.createTransaction,{tx:H,inputs:K}=await R({...w,feeRate:D,fetchTxHex:!0,memo:V,recipient:$,sender:L}),z=await E(H,K,V);return await Z.broadcastTx(z)},W=await S(j),M=x(Q.slice(0,3));async function O(){let $=(await import("@trezor/connect-web")).default,{success:N,payload:X}=await $.getPublicKey({coin:q,path:M});if(!N)throw new P({errorKey:"wallet_trezor_failed_to_get_public_key",info:{chain:j,error:X.error||"Unknown error"}});return{chainCode:X.chainCode,depth:X.depth,fingerprint:X.fingerprint,path:X.serializedPath,publicKey:X.publicKey,xpub:X.xpub,xpubSegwit:X.xpubSegwit}}async function A({index:$,change:N=!1}){let X=(await import("@trezor/connect-web")).default,V=`${M}/${Number(N)}/${$}`,{success:w,payload:Z}=await X.getAddress({coin:q,path:V,showOnTrezor:!1});if(!w)return;let D=Z.address;if(j===B.BitcoinCash)D=(await S(j)).stripPrefix(Z.address);let R=await X.getPublicKey({coin:q,path:V}),H=R.success?R.payload.publicKey:"";return{address:D,change:N,index:$,pubkey:H}}async function b({count:$,startIndex:N=0,change:X=!1}){let V=(await import("@trezor/connect-web")).default,w=Array.from({length:$},(H,K)=>({coin:q,path:`${M}/${Number(X)}/${N+K}`,showOnTrezor:!1})),{success:Z,payload:D}=await V.getAddress({bundle:w});if(!Z||!Array.isArray(D))return[];return await Promise.all(D.map(async(H,K)=>{let z=H.address;if(j===B.BitcoinCash)z=(await S(j)).stripPrefix(H.address);return{address:z,change:X,index:N+K,pubkey:""}}))}let v=o({chain:j,deriveAddress:A,getBalance:W.getBalance,getUtxos:($)=>a(j).getUtxos({address:$,fetchTxHex:!0})});return{...W,...v,address:L,deriveAddressAtIndex:A,deriveAddresses:b,getExtendedPublicKey:O,signTransaction:E,signTransactionWithMultipleInputs:F,transfer:k,transferFromMultipleAddresses:G}}default:throw new P({errorKey:"wallet_chain_not_supported",info:{chain:j,wallet:f.TREZOR}})}}var Sj=u({connect:({addChain:j,supportedChains:Q,walletType:Y})=>async function(U,q){let[J]=i({chains:U,supportedChains:Q,walletType:Y});if(!J)throw new P({errorKey:"wallet_chain_not_supported",info:{chain:J,wallet:f.TREZOR}});let L=(await import("@trezor/connect-web")).default,{success:E}=await L.getDeviceState();if(!E){let G=s.get("integrations").trezor,k=G?{...G,appName:G.appName||"SwapKit"}:{appName:"SwapKit",appUrl:"",email:""};L.init({lazyLoad:!0,manifest:k})}let F=await Qj({chain:J,derivationPath:q});return j({...F,chain:J,walletType:Y}),!0},name:"connectTrezor",supportedChains:[B.Arbitrum,B.Aurora,B.Avalanche,B.Base,B.Berachain,B.BinanceSmartChain,B.Bitcoin,B.BitcoinCash,B.Dash,B.Dogecoin,B.Ethereum,B.Gnosis,B.Litecoin,B.Monad,B.Optimism,B.Polygon,B.XLayer,B.Zcash],walletType:f.TREZOR}),Dj=l(Sj);export{Sj as trezorWallet,Dj as TREZOR_SUPPORTED_CHAINS};
1
+ import{c as _}from"../chunk-25q3rr1d.js";import{Chain as q,derivationPathToString as x,FeeOption as m,filterSupportedChains as d,SKConfig as r,SwapKitError as P,WalletOption as f}from"@swapkit/helpers";import{createHDWalletHelpers as i,getNetworkForChain as h,getUtxoApi as s}from"@swapkit/toolboxes/utxo";import{NETWORKS as u,ZcashConsensusBranchId as o,ZcashVersionGroupId as a}from"@swapkit/utxo-signer";import{createWallet as n,getWalletSupportedChains as t}from"@swapkit/wallet-core";function l(j){if(j.length<2||j[0]!==106)return null;let Q=j[1];if(Q===void 0||j.length<2+Q)return null;return Buffer.from(j.slice(2,2+Q)).toString("hex")}function e(j){switch(j[0]){case 84:return{input:"SPENDWITNESS",output:"PAYTOWITNESS"};case 49:return{input:"SPENDP2SHWITNESS",output:"PAYTOP2SHWITNESS"};case 44:return{input:"SPENDADDRESS",output:"PAYTOADDRESS"};default:return null}}function y(j){return j.map((Q,Y)=>Y<3?(Q|2147483648)>>>0:Q)}function jj(j,Q,Y){let S=[];for(let U=0;U<j.inputsLength;U++){let B=j.getInput(U);S.push({address_n:Q,amount:B.value.toString(),prev_hash:Y.encode(new Uint8Array([...B.txid].reverse())),prev_index:B.index,script_type:"SPENDADDRESS"})}return S}async function qj(j,Q,Y,S){let U=[];for(let B=0;B<j.outputsLength;B++){let J=j.getOutput(B),L=J.scriptPubkey;if(J.value===0n&&L?.length>0&&L[0]===106){let G=l(L);if(G){U.push({amount:"0",op_return_data:G,script_type:"PAYTOOPRETURN"});continue}throw new P({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:S,error:"Malformed OP_RETURN output cannot be signed"}})}let E=await Bj(L);if(!E&&J.value>0n)throw new P({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:S,error:"Unable to decode output address from scriptPubkey"}});if(E===Y)U.push({address_n:Q,amount:J.value.toString(),script_type:"PAYTOADDRESS"});else U.push({address:E,amount:J.value.toString(),script_type:"PAYTOADDRESS"})}return U}async function Bj(j){try{let{OutScript:Q,Address:Y}=await import("@swapkit/utxo-signer"),S=Q.decode(j);if(S.type==="pkh"||S.type==="pk")return Y(u.zcash).encode(S)}catch{}return}async function Gj(j,Q){let{ZcashTransaction:Y,Script:S}=await import("@swapkit/utxo-signer"),U=Y.fromHex(j,{allowUnknownOutputs:!0}),B=Q.clone();for(let J=0;J<U.inputsLength;J++){let E=U.getInput(J).script;if(E&&E.length>0){let F=S.decode(E);if(F.length>=2)B.addSignature(J,F[1],F[0])}}return B}function Jj(j,Q,Y,S){let U=[];for(let B=0;B<j.inputsLength;B++){let J=j.getInput(B),L=Q[B];U.push({address_n:Y,amount:L?.value?.toString()||"0",prev_hash:J.txid?S.encode(new Uint8Array([...J.txid].reverse())):"",prev_index:J.index??0,script_type:"SPENDADDRESS"})}return U}function Lj(j,Q,Y,S){let U=[];for(let B=0;B<j.outputsLength;B++){let J=j.getOutput(B),L=j.getOutputAddress(B,u.zcash),E=J.script;if(J.amount===0n&&E?.length>0&&E[0]===106){let k=l(E);if(k){U.push({amount:"0",op_return_data:k,script_type:"PAYTOOPRETURN"});continue}continue}if(!L&&(J.amount??0n)>0n)throw new P({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:S,error:"Unable to decode output address"}});let G=L===Y||!L?{address_n:Q}:{address:L};U.push({...G,amount:J.amount?.toString()||"0",script_type:"PAYTOADDRESS"})}return U}function c(j,Q,Y,S,U,B,J,L,E){let F=[];for(let G=0;G<j.outputsLength;G++){let k=j.getOutput(G),W=j.getOutputAddress(G,Q);if(!W){F.push({amount:"0",op_return_data:Buffer.from(U).toString("hex"),script_type:"PAYTOOPRETURN"});continue}let M=B===q.BitcoinCash?E(L(W)):W,O=M===S;F.push(O?{address_n:Y,amount:Number(k.amount),script_type:J.output}:{address:M,amount:Number(k.amount),script_type:"PAYTOADDRESS"})}return F}async function Qj({chain:j,derivationPath:Q}){switch(j){case q.Arbitrum:case q.Aurora:case q.Avalanche:case q.Base:case q.Berachain:case q.BinanceSmartChain:case q.Ethereum:case q.Gnosis:case q.Monad:case q.Optimism:case q.Polygon:case q.XLayer:{let{getProvider:Y,getEvmToolboxAsync:S}=await import("@swapkit/toolboxes/evm"),{getEVMSigner:U}=await import("../chunk-e5bb5ftj.js"),B=await Y(j),J=await U({chain:j,derivationPath:Q,provider:B}),L=await J.getAddress();return{...await S(j,{provider:B,signer:J}),address:L}}case q.Zcash:{let{getUtxoToolbox:Y}=await import("@swapkit/toolboxes/utxo"),S=x(Q),B=await(async()=>{let G=(await import("@trezor/connect-web")).default,{success:k,payload:W}=await G.getAddress({coin:"zcash",path:S});if(!k)throw new P({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:j,error:W.error||"Unknown error"}});return W.address})(),J={getAddress:async()=>B,signPCZT:async(G)=>{let k=(await import("@trezor/connect-web")).default,{hex:W}=await import("@scure/base"),M=y(Q),O=G.getGlobal(),A=jj(G,M,W),b=await qj(G,M,B,j),v=await k.signTransaction({branchId:O.consensusBranchId,coin:"zcash",expiry:O.expiryHeight,inputs:A,locktime:O.lockTime,outputs:b,overwintered:!0,version:O.txVersion,versionGroupId:O.versionGroupId});if(!v.success)throw new P({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:j,error:v.payload.error}});return Gj(v.payload.serializedTx,G)},signTransaction:async(G,k)=>{let W=(await import("@trezor/connect-web")).default,{hex:M}=await import("@scure/base"),O=y(Q),A=Jj(G,k,O,M),b=Lj(G,O,B,j),v=await W.signTransaction({branchId:o.NU6,coin:"zcash",expiry:0,inputs:A,locktime:0,outputs:b,overwintered:!0,version:4,versionGroupId:a.SAPLING});if(v.success)return v.payload.serializedTx;throw new P({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:j,error:v.payload.error}})}},L=Y(q.Zcash),E=async(G)=>{if(!(B&&G.recipient))throw new P({errorKey:"wallet_missing_params",info:{address:B,recipient:G.recipient,wallet:f.TREZOR}});let k=G.feeRate||(await L.getFeeRates())[G.feeOptionKey||m.Fast],{tx:W,inputs:M}=await L.createTransaction({...G,feeRate:k,fetchTxHex:!1,sender:B}),O=await J.signTransaction(W,M);return await L.broadcastTx(O)},F=async(G)=>{if(!(B&&G.recipient))throw new P({errorKey:"wallet_missing_params",info:{address:B,recipient:G.recipient,wallet:f.TREZOR}});let{createPCZT:k,OutScript:W}=await import("@swapkit/utxo-signer"),{hex:M}=await import("@scure/base"),{getUtxoApi:O}=await import("@swapkit/toolboxes/utxo"),A=G.feeRate||(await L.getFeeRates())[G.feeOptionKey||m.Fast],b=await O(q.Zcash).getUtxos({address:B}),{tx:v,inputs:$}=await L.createTransaction({...G,feeRate:A,fetchTxHex:!1,sender:B}),N=k();for(let Z of $){let D=b.find((H)=>H.hash===Z.hash&&H.index===Z.index),R=D?.witnessUtxo?.script?new Uint8Array(D.witnessUtxo.script):W.encode({hash:M.decode(Z.address||""),type:"pkh"});N.addInput({index:Z.index,scriptPubkey:R,txid:M.decode(Z.hash).reverse(),value:BigInt(Z.value)})}for(let Z=0;Z<v.outputsLength;Z++){let D=v.getOutput(Z);N.addOutput({scriptPubkey:D.script||new Uint8Array,value:D.amount||0n})}let X=await J.signPCZT(N);X.finalizeAllInputs();let V=X.extract();return await L.broadcastTx(V.toHex())};return{...L,address:B,signPCZT:J.signPCZT,signTransaction:J.signTransaction,transfer:E,transferWithPCZT:F}}case q.Bitcoin:case q.BitcoinCash:case q.Dash:case q.Dogecoin:case q.Litecoin:{let{toCashAddress:Y,getUtxoToolbox:S}=await import("@swapkit/toolboxes/utxo"),U=e(Q);if(!U)throw new P({errorKey:"wallet_trezor_derivation_path_not_supported",info:{derivationPath:Q}});let B=j.toLowerCase(),L=await(async($=Q)=>{let N=(await import("@trezor/connect-web")).default,{success:X,payload:V}=await N.getAddress({coin:B,path:x($)});if(!X)throw new P({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:j,error:V.error||"Unknown error"}});if(j===q.BitcoinCash)return(await S(j)).stripPrefix(V.address);return V.address})(),E=async($,N,X="")=>{let V=(await import("@trezor/connect-web")).default,w=y(Q),Z=S(j),D=h(j),R=c($,D,w,L,X,j,U,Y,Z.stripPrefix),H=await V.signTransaction({coin:B,inputs:N.map(({hash:K,index:z,value:I})=>({address_n:w,amount:I,prev_hash:K,prev_index:z,script_type:U.input})),outputs:R});if(H.success)return H.payload.serializedTx;throw new P({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:j,error:H.payload.error}})},F=async($,N,X="")=>{let V=(await import("@trezor/connect-web")).default,w=await S(j),Z=h(j),D=y(Q.slice(0,3)),R=c($,Z,D,L,X,j,U,Y,w.stripPrefix),H=N.map(({hash:z,index:I,value:C,derivationIndex:g,isChange:T})=>{let p=T?1:0;return{address_n:[...D,p,g],amount:C,prev_hash:z,prev_index:I,script_type:U.input}}),K=await V.signTransaction({coin:B,inputs:H,outputs:R});if(K.success)return K.payload.serializedTx;throw new P({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:j,error:K.payload.error}})},G=async({utxos:$,recipient:N,assetValue:X,memo:V,feeRate:w,feeOptionKey:Z})=>{let D=S(j),R=w||(await D.getFeeRates())[Z||m.Fast],{tx:H,inputs:K}=await D.createTransaction({assetValue:X,feeRate:R,fetchTxHex:!0,memo:V,recipient:N,sender:L}),z=K.map((C)=>{let g=$.find((T)=>T.hash===C.hash&&T.index===C.index);return{...C,derivationIndex:g?.derivationIndex??0,isChange:g?.isChange??!1}}),I=await F(H,z,V);return D.broadcastTx(I)},k=async({recipient:$,feeOptionKey:N,feeRate:X,memo:V,...w})=>{if(!(L&&$))throw new P({errorKey:"wallet_missing_params",info:{address:L,memo:V,recipient:$,wallet:f.TREZOR}});let Z=S(j),D=X||(await Z.getFeeRates())[N||m.Fast],R=Z.createTransaction,{tx:H,inputs:K}=await R({...w,feeRate:D,fetchTxHex:!0,memo:V,recipient:$,sender:L}),z=await E(H,K,V);return await Z.broadcastTx(z)},W=await S(j),M=x(Q.slice(0,3));async function O(){let $=(await import("@trezor/connect-web")).default,{success:N,payload:X}=await $.getPublicKey({coin:B,path:M});if(!N)throw new P({errorKey:"wallet_trezor_failed_to_get_public_key",info:{chain:j,error:X.error||"Unknown error"}});return{chainCode:X.chainCode,depth:X.depth,fingerprint:X.fingerprint,path:X.serializedPath,publicKey:X.publicKey,xpub:X.xpub,xpubSegwit:X.xpubSegwit}}async function A({index:$,change:N=!1}){let X=(await import("@trezor/connect-web")).default,V=`${M}/${Number(N)}/${$}`,{success:w,payload:Z}=await X.getAddress({coin:B,path:V,showOnTrezor:!1});if(!w)return;let D=Z.address;if(j===q.BitcoinCash)D=(await S(j)).stripPrefix(Z.address);let R=await X.getPublicKey({coin:B,path:V}),H=R.success?R.payload.publicKey:"";return{address:D,change:N,index:$,pubkey:H}}async function b({count:$,startIndex:N=0,change:X=!1}){let V=(await import("@trezor/connect-web")).default,w=Array.from({length:$},(H,K)=>({coin:B,path:`${M}/${Number(X)}/${N+K}`,showOnTrezor:!1})),{success:Z,payload:D}=await V.getAddress({bundle:w});if(!Z||!Array.isArray(D))return[];return await Promise.all(D.map(async(H,K)=>{let z=H.address;if(j===q.BitcoinCash)z=(await S(j)).stripPrefix(H.address);return{address:z,change:X,index:N+K,pubkey:""}}))}let v=i({chain:j,deriveAddress:A,getBalance:W.getBalance,getUtxos:($)=>s(j).getUtxos({address:$,fetchTxHex:!0})});return{...W,...v,address:L,deriveAddressAtIndex:A,deriveAddresses:b,getExtendedPublicKey:O,signTransaction:E,signTransactionWithMultipleInputs:F,transfer:k,transferFromMultipleAddresses:G}}default:throw new P({errorKey:"wallet_chain_not_supported",info:{chain:j,wallet:f.TREZOR}})}}var Sj=n({connect:({addChain:j,supportedChains:Q,walletType:Y})=>async function(U,B){let[J]=d({chains:U,supportedChains:Q,walletType:Y});if(!J)throw new P({errorKey:"wallet_chain_not_supported",info:{chain:J,wallet:f.TREZOR}});let L=(await import("@trezor/connect-web")).default,{success:E}=await L.getDeviceState();if(!E){let G=r.get("integrations").trezor,k=G?{...G,appName:G.appName||"SwapKit"}:{appName:"SwapKit",appUrl:"",email:""};L.init({lazyLoad:!0,manifest:k})}let F=await Qj({chain:J,derivationPath:B});return j({...F,chain:J,walletType:Y}),!0},directSigningSupport:{[q.Arbitrum]:!0,[q.Aurora]:!0,[q.Avalanche]:!0,[q.Base]:!0,[q.Berachain]:!0,[q.BinanceSmartChain]:!0,[q.Ethereum]:!0,[q.Gnosis]:!0,[q.Monad]:!0,[q.Optimism]:!0,[q.Polygon]:!0,[q.XLayer]:!0},name:"connectTrezor",supportedChains:[q.Arbitrum,q.Aurora,q.Avalanche,q.Base,q.Berachain,q.BinanceSmartChain,q.Bitcoin,q.BitcoinCash,q.Dash,q.Dogecoin,q.Ethereum,q.Gnosis,q.Litecoin,q.Monad,q.Optimism,q.Polygon,q.XLayer,q.Zcash],walletType:f.TREZOR}),Dj=t(Sj);export{Sj as trezorWallet,Dj as TREZOR_SUPPORTED_CHAINS};
2
2
 
3
- //# debugId=0B02A6453962F0EF64756E2164756E21
3
+ //# debugId=2F5F05CA1496889064756E2164756E21
4
4
  //# sourceMappingURL=index.js.map
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/trezor/index.ts"],
4
4
  "sourcesContent": [
5
- "import {\n Chain,\n type DerivationPathArray,\n derivationPathToString,\n FeeOption,\n filterSupportedChains,\n type GenericTransferParams,\n SKConfig,\n SwapKitError,\n type UTXOChain,\n WalletOption,\n} from \"@swapkit/helpers\";\nimport {\n createHDWalletHelpers,\n getNetworkForChain,\n getUtxoApi,\n type UTXOToolboxes,\n type UTXOType,\n} from \"@swapkit/toolboxes/utxo\";\nimport type { BTCNetwork, PCZT, Transaction, ZcashTransaction } from \"@swapkit/utxo-signer\";\nimport { NETWORKS, ZcashConsensusBranchId, ZcashVersionGroupId } from \"@swapkit/utxo-signer\";\nimport { createWallet, getWalletSupportedChains } from \"../core\";\n\nfunction decodeOpReturnData(script: Uint8Array): string | null {\n if (script.length < 2 || script[0] !== 0x6a) return null;\n const dataLen = script[1];\n if (dataLen === undefined || script.length < 2 + dataLen) return null;\n return Buffer.from(script.slice(2, 2 + dataLen)).toString(\"hex\");\n}\n\nfunction getScriptType(derivationPath: DerivationPathArray) {\n switch (derivationPath[0]) {\n case 84:\n return { input: \"SPENDWITNESS\", output: \"PAYTOWITNESS\" } as const;\n case 49:\n return { input: \"SPENDP2SHWITNESS\", output: \"PAYTOP2SHWITNESS\" } as const;\n case 44:\n return { input: \"SPENDADDRESS\", output: \"PAYTOADDRESS\" } as const;\n default:\n return null;\n }\n}\n\nfunction hardenDerivationPath(derivationPath: DerivationPathArray): number[] {\n return derivationPath.map((pathElement, index) =>\n index < 3 ? ((pathElement as number) | 0x80000000) >>> 0 : (pathElement as number),\n );\n}\n\nfunction buildPCZTInputsForTrezor(\n pczt: PCZT,\n address_n: number[],\n hexEncode: { encode: (data: Uint8Array) => string },\n) {\n const inputs = [];\n for (let i = 0; i < pczt.inputsLength; i++) {\n const input = pczt.getInput(i);\n inputs.push({\n address_n,\n amount: input.value.toString(),\n prev_hash: hexEncode.encode(new Uint8Array([...input.txid].reverse())),\n prev_index: input.index,\n script_type: \"SPENDADDRESS\" as const,\n });\n }\n return inputs;\n}\n\nasync function buildPCZTOutputsForTrezor(pczt: PCZT, address_n: number[], myAddress: string, chain: Chain) {\n const outputs = [];\n for (let i = 0; i < pczt.outputsLength; i++) {\n const output = pczt.getOutput(i);\n const script = output.scriptPubkey;\n\n if (output.value === 0n && script?.length > 0 && script[0] === 0x6a) {\n const opReturnData = decodeOpReturnData(script);\n if (opReturnData) {\n outputs.push({ amount: \"0\", op_return_data: opReturnData, script_type: \"PAYTOOPRETURN\" as const });\n continue;\n }\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain, error: \"Malformed OP_RETURN output cannot be signed\" },\n });\n }\n\n const outputAddress = await decodeOutputAddress(script);\n\n if (!outputAddress && output.value > 0n) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain, error: \"Unable to decode output address from scriptPubkey\" },\n });\n }\n\n const isChangeAddress = outputAddress === myAddress;\n\n if (isChangeAddress) {\n outputs.push({ address_n, amount: output.value.toString(), script_type: \"PAYTOADDRESS\" as const });\n } else {\n outputs.push({ address: outputAddress, amount: output.value.toString(), script_type: \"PAYTOADDRESS\" as const });\n }\n }\n return outputs;\n}\n\nasync function decodeOutputAddress(script: Uint8Array): Promise<string | undefined> {\n try {\n const { OutScript, Address } = await import(\"@swapkit/utxo-signer\");\n const decoded = OutScript.decode(script);\n if (decoded.type === \"pkh\" || decoded.type === \"pk\") {\n return Address(NETWORKS.zcash).encode(decoded);\n }\n } catch {\n // ignore decode errors\n }\n return undefined;\n}\n\nasync function extractSignaturesFromSignedTx(signedTxHex: string, pczt: PCZT): Promise<PCZT> {\n const { ZcashTransaction: ZcashTx, Script } = await import(\"@swapkit/utxo-signer\");\n const signedTx = ZcashTx.fromHex(signedTxHex, { allowUnknownOutputs: true });\n const signedPczt = pczt.clone();\n\n for (let i = 0; i < signedTx.inputsLength; i++) {\n const signedInput = signedTx.getInput(i);\n const script = signedInput.script;\n if (script && script.length > 0) {\n const scriptParts = Script.decode(script);\n if (scriptParts.length >= 2) {\n signedPczt.addSignature(i, scriptParts[1] as Uint8Array, scriptParts[0] as Uint8Array);\n }\n }\n }\n return signedPczt;\n}\n\nfunction buildZcashTxInputsForTrezor(\n tx: ZcashTransaction,\n utxoInputs: UTXOType[],\n address_n: number[],\n hexEncode: { encode: (data: Uint8Array) => string },\n) {\n const inputs = [];\n for (let i = 0; i < tx.inputsLength; i++) {\n const input = tx.getInput(i);\n const utxoInfo = utxoInputs[i];\n inputs.push({\n address_n,\n amount: utxoInfo?.value?.toString() || \"0\",\n prev_hash: input.txid ? hexEncode.encode(new Uint8Array([...input.txid].reverse())) : \"\",\n prev_index: input.index ?? 0,\n script_type: \"SPENDADDRESS\" as const,\n });\n }\n return inputs;\n}\n\nfunction buildZcashTxOutputsForTrezor(tx: ZcashTransaction, address_n: number[], myAddress: string, chain: Chain) {\n const outputs = [];\n for (let i = 0; i < tx.outputsLength; i++) {\n const output = tx.getOutput(i);\n const outputAddress = tx.getOutputAddress(i, NETWORKS.zcash);\n const script = output.script;\n\n if (output.amount === 0n && script?.length > 0 && script[0] === 0x6a) {\n const opReturnData = decodeOpReturnData(script);\n if (opReturnData) {\n outputs.push({ amount: \"0\", op_return_data: opReturnData, script_type: \"PAYTOOPRETURN\" as const });\n continue;\n }\n continue;\n }\n\n if (!outputAddress && (output.amount ?? 0n) > 0n) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain, error: \"Unable to decode output address\" },\n });\n }\n\n const isChangeAddress = outputAddress === myAddress;\n const outputParam = isChangeAddress || !outputAddress ? { address_n } : { address: outputAddress };\n outputs.push({ ...outputParam, amount: output.amount?.toString() || \"0\", script_type: \"PAYTOADDRESS\" as const });\n }\n return outputs;\n}\n\nfunction buildUtxoOutputsForTrezor(\n tx: Transaction,\n network: BTCNetwork,\n address_n: number[],\n myAddress: string,\n memo: string,\n chain: Chain,\n scriptType: { input: string; output: string },\n toCashAddress: (addr: string) => string,\n stripPrefix: (addr: string) => string,\n) {\n const outputs: any[] = [];\n for (let i = 0; i < tx.outputsLength; i++) {\n const output = tx.getOutput(i);\n const outputAddress = tx.getOutputAddress(i, network);\n\n if (!outputAddress) {\n outputs.push({ amount: \"0\", op_return_data: Buffer.from(memo).toString(\"hex\"), script_type: \"PAYTOOPRETURN\" });\n continue;\n }\n\n const finalAddress = chain === Chain.BitcoinCash ? stripPrefix(toCashAddress(outputAddress)) : outputAddress;\n const isChangeAddress = finalAddress === myAddress;\n\n outputs.push(\n isChangeAddress\n ? { address_n, amount: Number(output.amount), script_type: scriptType.output }\n : { address: finalAddress, amount: Number(output.amount), script_type: \"PAYTOADDRESS\" },\n );\n }\n return outputs;\n}\n\nasync function getTrezorWallet<T extends Chain>({\n chain,\n derivationPath,\n}: {\n chain: T;\n derivationPath: DerivationPathArray;\n}) {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Aurora:\n case Chain.Avalanche:\n case Chain.Base:\n case Chain.Berachain:\n case Chain.BinanceSmartChain:\n case Chain.Ethereum:\n case Chain.Gnosis:\n case Chain.Monad:\n case Chain.Optimism:\n case Chain.Polygon:\n case Chain.XLayer: {\n const { getProvider, getEvmToolboxAsync } = await import(\"@swapkit/toolboxes/evm\");\n const { getEVMSigner } = await import(\"./evmSigner\");\n\n const provider = await getProvider(chain);\n const signer = await getEVMSigner({ chain, derivationPath, provider });\n const address = await signer.getAddress();\n const toolbox = await getEvmToolboxAsync(chain, { provider, signer });\n\n return { ...toolbox, address };\n }\n\n case Chain.Zcash: {\n const { getUtxoToolbox } = await import(\"@swapkit/toolboxes/utxo\");\n\n const derivationPathStr = derivationPathToString(derivationPath);\n\n const getAddress = async () => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { success, payload } = await TrezorConnect.getAddress({ coin: \"zcash\", path: derivationPathStr });\n\n if (!success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_get_address\",\n info: { chain, error: (payload as { error: string; code?: string }).error || \"Unknown error\" },\n });\n }\n\n return payload.address;\n };\n\n const address = await getAddress();\n\n const signer = {\n getAddress: async () => address,\n\n signPCZT: async (pczt: PCZT): Promise<PCZT> => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { hex: hexEncode } = await import(\"@scure/base\");\n const address_n = hardenDerivationPath(derivationPath);\n const global = pczt.getGlobal();\n\n const inputs = buildPCZTInputsForTrezor(pczt, address_n, hexEncode);\n const outputs = await buildPCZTOutputsForTrezor(pczt, address_n, address, chain);\n\n const result = await TrezorConnect.signTransaction({\n branchId: global.consensusBranchId,\n coin: \"zcash\",\n expiry: global.expiryHeight,\n inputs,\n locktime: global.lockTime,\n outputs: outputs as any,\n overwintered: true,\n version: global.txVersion,\n versionGroupId: global.versionGroupId,\n });\n\n if (!result.success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain, error: (result.payload as { error: string; code?: string }).error },\n });\n }\n\n return extractSignaturesFromSignedTx(result.payload.serializedTx, pczt);\n },\n\n signTransaction: async (tx: ZcashTransaction, utxoInputs: UTXOType[]) => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { hex: hexEncode } = await import(\"@scure/base\");\n const address_n = hardenDerivationPath(derivationPath);\n\n const inputs = buildZcashTxInputsForTrezor(tx, utxoInputs, address_n, hexEncode);\n const outputs = buildZcashTxOutputsForTrezor(tx, address_n, address, chain);\n\n const result = await TrezorConnect.signTransaction({\n branchId: ZcashConsensusBranchId.NU6,\n coin: \"zcash\",\n expiry: 0,\n inputs,\n locktime: 0,\n outputs: outputs as any,\n overwintered: true,\n version: 4,\n versionGroupId: ZcashVersionGroupId.SAPLING,\n });\n\n if (result.success) {\n return result.payload.serializedTx;\n }\n\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain, error: (result.payload as { error: string; code?: string }).error },\n });\n },\n };\n\n const toolbox = getUtxoToolbox(Chain.Zcash);\n\n const transfer = async (params: GenericTransferParams) => {\n if (!(address && params.recipient)) {\n throw new SwapKitError({\n errorKey: \"wallet_missing_params\",\n info: { address, recipient: params.recipient, wallet: WalletOption.TREZOR },\n });\n }\n\n const feeRate = params.feeRate || (await toolbox.getFeeRates())[params.feeOptionKey || FeeOption.Fast];\n\n const { tx, inputs: txInputs } = await toolbox.createTransaction({\n ...params,\n feeRate,\n fetchTxHex: false,\n sender: address,\n });\n\n const txHex = await signer.signTransaction(tx, txInputs);\n const broadcastResult = await toolbox.broadcastTx(txHex);\n\n return broadcastResult;\n };\n\n const transferWithPCZT = async (params: GenericTransferParams) => {\n if (!(address && params.recipient)) {\n throw new SwapKitError({\n errorKey: \"wallet_missing_params\",\n info: { address, recipient: params.recipient, wallet: WalletOption.TREZOR },\n });\n }\n\n const { createPCZT, OutScript } = await import(\"@swapkit/utxo-signer\");\n const { hex: hexEncode } = await import(\"@scure/base\");\n const { getUtxoApi } = await import(\"@swapkit/toolboxes/utxo\");\n\n const feeRate = params.feeRate || (await toolbox.getFeeRates())[params.feeOptionKey || FeeOption.Fast];\n\n const utxos = await getUtxoApi(Chain.Zcash).getUtxos({ address });\n\n const { tx, inputs: txInputs } = await toolbox.createTransaction({\n ...params,\n feeRate,\n fetchTxHex: false,\n sender: address,\n });\n\n const pczt = createPCZT();\n\n for (const utxoInput of txInputs) {\n const utxo = utxos.find((u) => u.hash === utxoInput.hash && u.index === utxoInput.index);\n const scriptPubkey = utxo?.witnessUtxo?.script\n ? new Uint8Array(utxo.witnessUtxo.script)\n : OutScript.encode({ hash: hexEncode.decode((utxoInput as any).address || \"\"), type: \"pkh\" });\n\n pczt.addInput({\n index: utxoInput.index,\n scriptPubkey,\n txid: hexEncode.decode(utxoInput.hash).reverse() as unknown as Uint8Array,\n value: BigInt(utxoInput.value),\n });\n }\n\n for (let i = 0; i < tx.outputsLength; i++) {\n const output = tx.getOutput(i);\n pczt.addOutput({ scriptPubkey: output.script || new Uint8Array(), value: output.amount || 0n });\n }\n\n const signedPczt = await signer.signPCZT(pczt);\n signedPczt.finalizeAllInputs();\n const finalTx = signedPczt.extract();\n const broadcastResult = await toolbox.broadcastTx(finalTx.toHex());\n\n return broadcastResult;\n };\n\n return {\n ...toolbox,\n address,\n signPCZT: signer.signPCZT,\n signTransaction: signer.signTransaction,\n transfer,\n transferWithPCZT,\n };\n }\n\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Dash:\n case Chain.Dogecoin:\n case Chain.Litecoin: {\n const { toCashAddress, getUtxoToolbox } = await import(\"@swapkit/toolboxes/utxo\");\n const scriptType = getScriptType(derivationPath);\n\n if (!scriptType) {\n throw new SwapKitError({ errorKey: \"wallet_trezor_derivation_path_not_supported\", info: { derivationPath } });\n }\n\n const coin = chain.toLowerCase();\n\n const getAddress = async (path: DerivationPathArray = derivationPath) => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { success, payload } = await TrezorConnect.getAddress({ coin, path: derivationPathToString(path) });\n\n if (!success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_get_address\",\n info: { chain, error: (payload as { error: string; code?: string }).error || \"Unknown error\" },\n });\n }\n\n if (chain === Chain.BitcoinCash) {\n const toolbox = await getUtxoToolbox(chain as typeof Chain.BitcoinCash);\n return toolbox.stripPrefix(payload.address);\n }\n\n return payload.address;\n };\n\n const address = await getAddress();\n\n const signTransaction = async (tx: Transaction, inputs: UTXOType[], memo = \"\") => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const address_n = hardenDerivationPath(derivationPath);\n const toolbox = getUtxoToolbox(chain as typeof Chain.BitcoinCash);\n const network = getNetworkForChain(chain as UTXOChain);\n\n const outputs = buildUtxoOutputsForTrezor(\n tx,\n network,\n address_n,\n address,\n memo,\n chain,\n scriptType,\n toCashAddress,\n toolbox.stripPrefix,\n );\n\n const result = await TrezorConnect.signTransaction({\n coin,\n inputs: inputs.map(({ hash, index, value }) => ({\n address_n,\n amount: value,\n prev_hash: hash,\n prev_index: index,\n script_type: scriptType.input,\n })),\n outputs,\n });\n\n if (result.success) {\n return result.payload.serializedTx;\n }\n\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain, error: (result.payload as { error: string; code?: string }).error },\n });\n };\n\n const signTransactionWithMultipleInputs = async (\n tx: Transaction,\n inputs: Array<{ hash: string; index: number; value: number; derivationIndex: number; isChange: boolean }>,\n memo = \"\",\n ) => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const toolbox = await getUtxoToolbox(chain as typeof Chain.BitcoinCash);\n const network = getNetworkForChain(chain as UTXOChain);\n const baseAddressN = hardenDerivationPath(derivationPath.slice(0, 3) as DerivationPathArray);\n\n const outputs = buildUtxoOutputsForTrezor(\n tx,\n network,\n baseAddressN,\n address,\n memo,\n chain,\n scriptType,\n toCashAddress,\n toolbox.stripPrefix,\n );\n\n const trezorInputs = inputs.map(({ hash, index: inputIndex, value, derivationIndex, isChange }) => {\n const changePath = isChange ? 1 : 0;\n const inputAddressN = [...baseAddressN, changePath, derivationIndex];\n return {\n address_n: inputAddressN,\n amount: value,\n prev_hash: hash,\n prev_index: inputIndex,\n script_type: scriptType.input,\n };\n });\n\n const result = await TrezorConnect.signTransaction({ coin, inputs: trezorInputs, outputs });\n\n if (result.success) {\n return result.payload.serializedTx;\n }\n\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain, error: (result.payload as { error: string; code?: string }).error },\n });\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 toolbox = getUtxoToolbox(chain);\n const txFeeRate = feeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast];\n\n const { tx, inputs: selectedInputs } = await toolbox.createTransaction({\n assetValue: assetValue as any,\n feeRate: txFeeRate,\n fetchTxHex: true,\n memo,\n recipient,\n sender: address,\n });\n\n const inputsWithDerivation = selectedInputs.map((input: { hash: string; index: number; value: number }) => {\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 const signedTxHex = await signTransactionWithMultipleInputs(tx as Transaction, inputsWithDerivation, memo);\n return toolbox.broadcastTx(signedTxHex);\n };\n\n const transfer = async ({\n recipient,\n feeOptionKey,\n feeRate: paramFeeRate,\n memo,\n ...rest\n }: GenericTransferParams) => {\n if (!(address && recipient)) {\n throw new SwapKitError({\n errorKey: \"wallet_missing_params\",\n info: { address, memo, recipient, wallet: WalletOption.TREZOR },\n });\n }\n\n const toolbox = getUtxoToolbox(chain);\n\n const feeRate = paramFeeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast];\n\n const createTxMethod = (toolbox as UTXOToolboxes[\"BTC\"]).createTransaction;\n\n const { tx, inputs } = await createTxMethod({\n ...rest,\n feeRate,\n fetchTxHex: true,\n memo,\n recipient,\n sender: address,\n });\n\n const signedTxHex = await signTransaction(tx, inputs, memo);\n const txHash = await toolbox.broadcastTx(signedTxHex);\n\n return txHash;\n };\n\n const toolbox = await getUtxoToolbox(chain);\n\n const accountPath = derivationPathToString(derivationPath.slice(0, 3) as DerivationPathArray);\n\n async function getExtendedPublicKey() {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { success, payload } = await TrezorConnect.getPublicKey({ coin, path: accountPath });\n\n if (!success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_get_public_key\",\n info: { chain, error: (payload as { error: string; code?: string }).error || \"Unknown error\" },\n });\n }\n\n return {\n chainCode: payload.chainCode,\n depth: payload.depth,\n fingerprint: payload.fingerprint,\n path: payload.serializedPath,\n publicKey: payload.publicKey,\n xpub: payload.xpub,\n xpubSegwit: payload.xpubSegwit,\n };\n }\n\n async function deriveAddressAtIndex({ index, change = false }: { index: number; change?: boolean }) {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const fullPath = `${accountPath}/${Number(change)}/${index}`;\n\n const { success, payload } = await TrezorConnect.getAddress({ coin, path: fullPath, showOnTrezor: false });\n\n if (!success) {\n return undefined;\n }\n\n let finalAddress = payload.address;\n if (chain === Chain.BitcoinCash) {\n const bchToolbox = await getUtxoToolbox(chain as typeof Chain.BitcoinCash);\n finalAddress = bchToolbox.stripPrefix(payload.address);\n }\n\n const pubKeyResult = await TrezorConnect.getPublicKey({ coin, path: fullPath });\n const pubkey = pubKeyResult.success ? pubKeyResult.payload.publicKey : \"\";\n\n return { address: finalAddress, change, index, pubkey };\n }\n\n async function deriveAddressesBatch({\n count,\n startIndex = 0,\n change = false,\n }: {\n count: number;\n startIndex?: number;\n change?: boolean;\n }) {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n\n const paths = Array.from({ length: count }, (_, i) => ({\n coin,\n path: `${accountPath}/${Number(change)}/${startIndex + i}`,\n showOnTrezor: false,\n }));\n\n const { success, payload } = await TrezorConnect.getAddress({ bundle: paths });\n\n if (!success || !Array.isArray(payload)) {\n return [];\n }\n\n const addresses = await Promise.all(\n payload.map(async (result, i) => {\n let finalAddress = result.address;\n if (chain === Chain.BitcoinCash) {\n const bchToolbox = await getUtxoToolbox(chain as typeof Chain.BitcoinCash);\n finalAddress = bchToolbox.stripPrefix(result.address);\n }\n\n return { address: finalAddress, change, index: startIndex + i, pubkey: \"\" };\n }),\n );\n\n return addresses;\n }\n\n const hdHelpers = createHDWalletHelpers({\n chain,\n deriveAddress: deriveAddressAtIndex,\n getBalance: toolbox.getBalance,\n getUtxos: (addr: string) => getUtxoApi(chain).getUtxos({ address: addr, fetchTxHex: true }),\n });\n\n return {\n ...toolbox,\n ...hdHelpers,\n address,\n deriveAddressAtIndex,\n deriveAddresses: deriveAddressesBatch, // Keep Trezor's optimized batch version\n getExtendedPublicKey,\n signTransaction,\n signTransactionWithMultipleInputs,\n transfer,\n transferFromMultipleAddresses,\n };\n }\n\n default:\n throw new SwapKitError({ errorKey: \"wallet_chain_not_supported\", info: { chain, wallet: WalletOption.TREZOR } });\n }\n}\n\nexport const trezorWallet = createWallet({\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectTrezor(chains: Chain[], derivationPath: DerivationPathArray) {\n const [chain] = filterSupportedChains({ chains, supportedChains, walletType });\n if (!chain) {\n throw new SwapKitError({\n errorKey: \"wallet_chain_not_supported\",\n info: { chain, wallet: WalletOption.TREZOR },\n });\n }\n\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { success } = await TrezorConnect.getDeviceState();\n\n if (!success) {\n const trezorConfig = SKConfig.get(\"integrations\").trezor;\n const manifest = trezorConfig\n ? { ...trezorConfig, appName: (trezorConfig as any).appName || \"SwapKit\" }\n : { appName: \"SwapKit\", appUrl: \"\", email: \"\" };\n TrezorConnect.init({ lazyLoad: true, manifest });\n }\n\n const wallet = await getTrezorWallet({ chain, derivationPath });\n\n addChain({ ...wallet, chain, walletType });\n\n return true;\n },\n name: \"connectTrezor\",\n supportedChains: [\n Chain.Arbitrum,\n Chain.Aurora,\n Chain.Avalanche,\n Chain.Base,\n Chain.Berachain,\n Chain.BinanceSmartChain,\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Dash,\n Chain.Dogecoin,\n Chain.Ethereum,\n Chain.Gnosis,\n Chain.Litecoin,\n Chain.Monad,\n Chain.Optimism,\n Chain.Polygon,\n Chain.XLayer,\n Chain.Zcash,\n ],\n walletType: WalletOption.TREZOR,\n});\n\nexport const TREZOR_SUPPORTED_CHAINS = getWalletSupportedChains(trezorWallet);\n"
5
+ "import {\n Chain,\n type DerivationPathArray,\n derivationPathToString,\n FeeOption,\n filterSupportedChains,\n type GenericTransferParams,\n SKConfig,\n SwapKitError,\n type UTXOChain,\n WalletOption,\n} from \"@swapkit/helpers\";\nimport {\n createHDWalletHelpers,\n getNetworkForChain,\n getUtxoApi,\n type UTXOToolboxes,\n type UTXOType,\n} from \"@swapkit/toolboxes/utxo\";\nimport type { BTCNetwork, PCZT, Transaction, ZcashTransaction } from \"@swapkit/utxo-signer\";\nimport { NETWORKS, ZcashConsensusBranchId, ZcashVersionGroupId } from \"@swapkit/utxo-signer\";\nimport { createWallet, getWalletSupportedChains } from \"@swapkit/wallet-core\";\n\nfunction decodeOpReturnData(script: Uint8Array): string | null {\n if (script.length < 2 || script[0] !== 0x6a) return null;\n const dataLen = script[1];\n if (dataLen === undefined || script.length < 2 + dataLen) return null;\n return Buffer.from(script.slice(2, 2 + dataLen)).toString(\"hex\");\n}\n\nfunction getScriptType(derivationPath: DerivationPathArray) {\n switch (derivationPath[0]) {\n case 84:\n return { input: \"SPENDWITNESS\", output: \"PAYTOWITNESS\" } as const;\n case 49:\n return { input: \"SPENDP2SHWITNESS\", output: \"PAYTOP2SHWITNESS\" } as const;\n case 44:\n return { input: \"SPENDADDRESS\", output: \"PAYTOADDRESS\" } as const;\n default:\n return null;\n }\n}\n\nfunction hardenDerivationPath(derivationPath: DerivationPathArray): number[] {\n return derivationPath.map((pathElement, index) =>\n index < 3 ? ((pathElement as number) | 0x80000000) >>> 0 : (pathElement as number),\n );\n}\n\nfunction buildPCZTInputsForTrezor(\n pczt: PCZT,\n address_n: number[],\n hexEncode: { encode: (data: Uint8Array) => string },\n) {\n const inputs = [];\n for (let i = 0; i < pczt.inputsLength; i++) {\n const input = pczt.getInput(i);\n inputs.push({\n address_n,\n amount: input.value.toString(),\n prev_hash: hexEncode.encode(new Uint8Array([...input.txid].reverse())),\n prev_index: input.index,\n script_type: \"SPENDADDRESS\" as const,\n });\n }\n return inputs;\n}\n\nasync function buildPCZTOutputsForTrezor(pczt: PCZT, address_n: number[], myAddress: string, chain: Chain) {\n const outputs = [];\n for (let i = 0; i < pczt.outputsLength; i++) {\n const output = pczt.getOutput(i);\n const script = output.scriptPubkey;\n\n if (output.value === 0n && script?.length > 0 && script[0] === 0x6a) {\n const opReturnData = decodeOpReturnData(script);\n if (opReturnData) {\n outputs.push({ amount: \"0\", op_return_data: opReturnData, script_type: \"PAYTOOPRETURN\" as const });\n continue;\n }\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain, error: \"Malformed OP_RETURN output cannot be signed\" },\n });\n }\n\n const outputAddress = await decodeOutputAddress(script);\n\n if (!outputAddress && output.value > 0n) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain, error: \"Unable to decode output address from scriptPubkey\" },\n });\n }\n\n const isChangeAddress = outputAddress === myAddress;\n\n if (isChangeAddress) {\n outputs.push({ address_n, amount: output.value.toString(), script_type: \"PAYTOADDRESS\" as const });\n } else {\n outputs.push({ address: outputAddress, amount: output.value.toString(), script_type: \"PAYTOADDRESS\" as const });\n }\n }\n return outputs;\n}\n\nasync function decodeOutputAddress(script: Uint8Array): Promise<string | undefined> {\n try {\n const { OutScript, Address } = await import(\"@swapkit/utxo-signer\");\n const decoded = OutScript.decode(script);\n if (decoded.type === \"pkh\" || decoded.type === \"pk\") {\n return Address(NETWORKS.zcash).encode(decoded);\n }\n } catch {\n // ignore decode errors\n }\n return undefined;\n}\n\nasync function extractSignaturesFromSignedTx(signedTxHex: string, pczt: PCZT): Promise<PCZT> {\n const { ZcashTransaction: ZcashTx, Script } = await import(\"@swapkit/utxo-signer\");\n const signedTx = ZcashTx.fromHex(signedTxHex, { allowUnknownOutputs: true });\n const signedPczt = pczt.clone();\n\n for (let i = 0; i < signedTx.inputsLength; i++) {\n const signedInput = signedTx.getInput(i);\n const script = signedInput.script;\n if (script && script.length > 0) {\n const scriptParts = Script.decode(script);\n if (scriptParts.length >= 2) {\n signedPczt.addSignature(i, scriptParts[1] as Uint8Array, scriptParts[0] as Uint8Array);\n }\n }\n }\n return signedPczt;\n}\n\nfunction buildZcashTxInputsForTrezor(\n tx: ZcashTransaction,\n utxoInputs: UTXOType[],\n address_n: number[],\n hexEncode: { encode: (data: Uint8Array) => string },\n) {\n const inputs = [];\n for (let i = 0; i < tx.inputsLength; i++) {\n const input = tx.getInput(i);\n const utxoInfo = utxoInputs[i];\n inputs.push({\n address_n,\n amount: utxoInfo?.value?.toString() || \"0\",\n prev_hash: input.txid ? hexEncode.encode(new Uint8Array([...input.txid].reverse())) : \"\",\n prev_index: input.index ?? 0,\n script_type: \"SPENDADDRESS\" as const,\n });\n }\n return inputs;\n}\n\nfunction buildZcashTxOutputsForTrezor(tx: ZcashTransaction, address_n: number[], myAddress: string, chain: Chain) {\n const outputs = [];\n for (let i = 0; i < tx.outputsLength; i++) {\n const output = tx.getOutput(i);\n const outputAddress = tx.getOutputAddress(i, NETWORKS.zcash);\n const script = output.script;\n\n if (output.amount === 0n && script?.length > 0 && script[0] === 0x6a) {\n const opReturnData = decodeOpReturnData(script);\n if (opReturnData) {\n outputs.push({ amount: \"0\", op_return_data: opReturnData, script_type: \"PAYTOOPRETURN\" as const });\n continue;\n }\n continue;\n }\n\n if (!outputAddress && (output.amount ?? 0n) > 0n) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain, error: \"Unable to decode output address\" },\n });\n }\n\n const isChangeAddress = outputAddress === myAddress;\n const outputParam = isChangeAddress || !outputAddress ? { address_n } : { address: outputAddress };\n outputs.push({ ...outputParam, amount: output.amount?.toString() || \"0\", script_type: \"PAYTOADDRESS\" as const });\n }\n return outputs;\n}\n\nfunction buildUtxoOutputsForTrezor(\n tx: Transaction,\n network: BTCNetwork,\n address_n: number[],\n myAddress: string,\n memo: string,\n chain: Chain,\n scriptType: { input: string; output: string },\n toCashAddress: (addr: string) => string,\n stripPrefix: (addr: string) => string,\n) {\n const outputs: any[] = [];\n for (let i = 0; i < tx.outputsLength; i++) {\n const output = tx.getOutput(i);\n const outputAddress = tx.getOutputAddress(i, network);\n\n if (!outputAddress) {\n outputs.push({ amount: \"0\", op_return_data: Buffer.from(memo).toString(\"hex\"), script_type: \"PAYTOOPRETURN\" });\n continue;\n }\n\n const finalAddress = chain === Chain.BitcoinCash ? stripPrefix(toCashAddress(outputAddress)) : outputAddress;\n const isChangeAddress = finalAddress === myAddress;\n\n outputs.push(\n isChangeAddress\n ? { address_n, amount: Number(output.amount), script_type: scriptType.output }\n : { address: finalAddress, amount: Number(output.amount), script_type: \"PAYTOADDRESS\" },\n );\n }\n return outputs;\n}\n\nasync function getTrezorWallet<T extends Chain>({\n chain,\n derivationPath,\n}: {\n chain: T;\n derivationPath: DerivationPathArray;\n}) {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Aurora:\n case Chain.Avalanche:\n case Chain.Base:\n case Chain.Berachain:\n case Chain.BinanceSmartChain:\n case Chain.Ethereum:\n case Chain.Gnosis:\n case Chain.Monad:\n case Chain.Optimism:\n case Chain.Polygon:\n case Chain.XLayer: {\n const { getProvider, getEvmToolboxAsync } = await import(\"@swapkit/toolboxes/evm\");\n const { getEVMSigner } = await import(\"./evmSigner\");\n\n const provider = await getProvider(chain);\n const signer = await getEVMSigner({ chain, derivationPath, provider });\n const address = await signer.getAddress();\n const toolbox = await getEvmToolboxAsync(chain, { provider, signer });\n\n return { ...toolbox, address };\n }\n\n case Chain.Zcash: {\n const { getUtxoToolbox } = await import(\"@swapkit/toolboxes/utxo\");\n\n const derivationPathStr = derivationPathToString(derivationPath);\n\n const getAddress = async () => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { success, payload } = await TrezorConnect.getAddress({ coin: \"zcash\", path: derivationPathStr });\n\n if (!success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_get_address\",\n info: { chain, error: (payload as { error: string; code?: string }).error || \"Unknown error\" },\n });\n }\n\n return payload.address;\n };\n\n const address = await getAddress();\n\n const signer = {\n getAddress: async () => address,\n\n signPCZT: async (pczt: PCZT): Promise<PCZT> => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { hex: hexEncode } = await import(\"@scure/base\");\n const address_n = hardenDerivationPath(derivationPath);\n const global = pczt.getGlobal();\n\n const inputs = buildPCZTInputsForTrezor(pczt, address_n, hexEncode);\n const outputs = await buildPCZTOutputsForTrezor(pczt, address_n, address, chain);\n\n const result = await TrezorConnect.signTransaction({\n branchId: global.consensusBranchId,\n coin: \"zcash\",\n expiry: global.expiryHeight,\n inputs,\n locktime: global.lockTime,\n outputs: outputs as any,\n overwintered: true,\n version: global.txVersion,\n versionGroupId: global.versionGroupId,\n });\n\n if (!result.success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain, error: (result.payload as { error: string; code?: string }).error },\n });\n }\n\n return extractSignaturesFromSignedTx(result.payload.serializedTx, pczt);\n },\n\n signTransaction: async (tx: ZcashTransaction, utxoInputs: UTXOType[]) => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { hex: hexEncode } = await import(\"@scure/base\");\n const address_n = hardenDerivationPath(derivationPath);\n\n const inputs = buildZcashTxInputsForTrezor(tx, utxoInputs, address_n, hexEncode);\n const outputs = buildZcashTxOutputsForTrezor(tx, address_n, address, chain);\n\n const result = await TrezorConnect.signTransaction({\n branchId: ZcashConsensusBranchId.NU6,\n coin: \"zcash\",\n expiry: 0,\n inputs,\n locktime: 0,\n outputs: outputs as any,\n overwintered: true,\n version: 4,\n versionGroupId: ZcashVersionGroupId.SAPLING,\n });\n\n if (result.success) {\n return result.payload.serializedTx;\n }\n\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain, error: (result.payload as { error: string; code?: string }).error },\n });\n },\n };\n\n const toolbox = getUtxoToolbox(Chain.Zcash);\n\n const transfer = async (params: GenericTransferParams) => {\n if (!(address && params.recipient)) {\n throw new SwapKitError({\n errorKey: \"wallet_missing_params\",\n info: { address, recipient: params.recipient, wallet: WalletOption.TREZOR },\n });\n }\n\n const feeRate = params.feeRate || (await toolbox.getFeeRates())[params.feeOptionKey || FeeOption.Fast];\n\n const { tx, inputs: txInputs } = await toolbox.createTransaction({\n ...params,\n feeRate,\n fetchTxHex: false,\n sender: address,\n });\n\n const txHex = await signer.signTransaction(tx, txInputs);\n const broadcastResult = await toolbox.broadcastTx(txHex);\n\n return broadcastResult;\n };\n\n const transferWithPCZT = async (params: GenericTransferParams) => {\n if (!(address && params.recipient)) {\n throw new SwapKitError({\n errorKey: \"wallet_missing_params\",\n info: { address, recipient: params.recipient, wallet: WalletOption.TREZOR },\n });\n }\n\n const { createPCZT, OutScript } = await import(\"@swapkit/utxo-signer\");\n const { hex: hexEncode } = await import(\"@scure/base\");\n const { getUtxoApi } = await import(\"@swapkit/toolboxes/utxo\");\n\n const feeRate = params.feeRate || (await toolbox.getFeeRates())[params.feeOptionKey || FeeOption.Fast];\n\n const utxos = await getUtxoApi(Chain.Zcash).getUtxos({ address });\n\n const { tx, inputs: txInputs } = await toolbox.createTransaction({\n ...params,\n feeRate,\n fetchTxHex: false,\n sender: address,\n });\n\n const pczt = createPCZT();\n\n for (const utxoInput of txInputs) {\n const utxo = utxos.find((u) => u.hash === utxoInput.hash && u.index === utxoInput.index);\n const scriptPubkey = utxo?.witnessUtxo?.script\n ? new Uint8Array(utxo.witnessUtxo.script)\n : OutScript.encode({ hash: hexEncode.decode((utxoInput as any).address || \"\"), type: \"pkh\" });\n\n pczt.addInput({\n index: utxoInput.index,\n scriptPubkey,\n txid: hexEncode.decode(utxoInput.hash).reverse() as unknown as Uint8Array,\n value: BigInt(utxoInput.value),\n });\n }\n\n for (let i = 0; i < tx.outputsLength; i++) {\n const output = tx.getOutput(i);\n pczt.addOutput({ scriptPubkey: output.script || new Uint8Array(), value: output.amount || 0n });\n }\n\n const signedPczt = await signer.signPCZT(pczt);\n signedPczt.finalizeAllInputs();\n const finalTx = signedPczt.extract();\n const broadcastResult = await toolbox.broadcastTx(finalTx.toHex());\n\n return broadcastResult;\n };\n\n return {\n ...toolbox,\n address,\n signPCZT: signer.signPCZT,\n signTransaction: signer.signTransaction,\n transfer,\n transferWithPCZT,\n };\n }\n\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Dash:\n case Chain.Dogecoin:\n case Chain.Litecoin: {\n const { toCashAddress, getUtxoToolbox } = await import(\"@swapkit/toolboxes/utxo\");\n const scriptType = getScriptType(derivationPath);\n\n if (!scriptType) {\n throw new SwapKitError({ errorKey: \"wallet_trezor_derivation_path_not_supported\", info: { derivationPath } });\n }\n\n const coin = chain.toLowerCase();\n\n const getAddress = async (path: DerivationPathArray = derivationPath) => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { success, payload } = await TrezorConnect.getAddress({ coin, path: derivationPathToString(path) });\n\n if (!success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_get_address\",\n info: { chain, error: (payload as { error: string; code?: string }).error || \"Unknown error\" },\n });\n }\n\n if (chain === Chain.BitcoinCash) {\n const toolbox = await getUtxoToolbox(chain as typeof Chain.BitcoinCash);\n return toolbox.stripPrefix(payload.address);\n }\n\n return payload.address;\n };\n\n const address = await getAddress();\n\n const signTransaction = async (tx: Transaction, inputs: UTXOType[], memo = \"\") => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const address_n = hardenDerivationPath(derivationPath);\n const toolbox = getUtxoToolbox(chain as typeof Chain.BitcoinCash);\n const network = getNetworkForChain(chain as UTXOChain);\n\n const outputs = buildUtxoOutputsForTrezor(\n tx,\n network,\n address_n,\n address,\n memo,\n chain,\n scriptType,\n toCashAddress,\n toolbox.stripPrefix,\n );\n\n const result = await TrezorConnect.signTransaction({\n coin,\n inputs: inputs.map(({ hash, index, value }) => ({\n address_n,\n amount: value,\n prev_hash: hash,\n prev_index: index,\n script_type: scriptType.input,\n })),\n outputs,\n });\n\n if (result.success) {\n return result.payload.serializedTx;\n }\n\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain, error: (result.payload as { error: string; code?: string }).error },\n });\n };\n\n const signTransactionWithMultipleInputs = async (\n tx: Transaction,\n inputs: Array<{ hash: string; index: number; value: number; derivationIndex: number; isChange: boolean }>,\n memo = \"\",\n ) => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const toolbox = await getUtxoToolbox(chain as typeof Chain.BitcoinCash);\n const network = getNetworkForChain(chain as UTXOChain);\n const baseAddressN = hardenDerivationPath(derivationPath.slice(0, 3) as DerivationPathArray);\n\n const outputs = buildUtxoOutputsForTrezor(\n tx,\n network,\n baseAddressN,\n address,\n memo,\n chain,\n scriptType,\n toCashAddress,\n toolbox.stripPrefix,\n );\n\n const trezorInputs = inputs.map(({ hash, index: inputIndex, value, derivationIndex, isChange }) => {\n const changePath = isChange ? 1 : 0;\n const inputAddressN = [...baseAddressN, changePath, derivationIndex];\n return {\n address_n: inputAddressN,\n amount: value,\n prev_hash: hash,\n prev_index: inputIndex,\n script_type: scriptType.input,\n };\n });\n\n const result = await TrezorConnect.signTransaction({ coin, inputs: trezorInputs, outputs });\n\n if (result.success) {\n return result.payload.serializedTx;\n }\n\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain, error: (result.payload as { error: string; code?: string }).error },\n });\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 toolbox = getUtxoToolbox(chain);\n const txFeeRate = feeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast];\n\n const { tx, inputs: selectedInputs } = await toolbox.createTransaction({\n assetValue: assetValue as any,\n feeRate: txFeeRate,\n fetchTxHex: true,\n memo,\n recipient,\n sender: address,\n });\n\n const inputsWithDerivation = selectedInputs.map((input: { hash: string; index: number; value: number }) => {\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 const signedTxHex = await signTransactionWithMultipleInputs(tx as Transaction, inputsWithDerivation, memo);\n return toolbox.broadcastTx(signedTxHex);\n };\n\n const transfer = async ({\n recipient,\n feeOptionKey,\n feeRate: paramFeeRate,\n memo,\n ...rest\n }: GenericTransferParams) => {\n if (!(address && recipient)) {\n throw new SwapKitError({\n errorKey: \"wallet_missing_params\",\n info: { address, memo, recipient, wallet: WalletOption.TREZOR },\n });\n }\n\n const toolbox = getUtxoToolbox(chain);\n\n const feeRate = paramFeeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast];\n\n const createTxMethod = (toolbox as UTXOToolboxes[\"BTC\"]).createTransaction;\n\n const { tx, inputs } = await createTxMethod({\n ...rest,\n feeRate,\n fetchTxHex: true,\n memo,\n recipient,\n sender: address,\n });\n\n const signedTxHex = await signTransaction(tx, inputs, memo);\n const txHash = await toolbox.broadcastTx(signedTxHex);\n\n return txHash;\n };\n\n const toolbox = await getUtxoToolbox(chain);\n\n const accountPath = derivationPathToString(derivationPath.slice(0, 3) as DerivationPathArray);\n\n async function getExtendedPublicKey() {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { success, payload } = await TrezorConnect.getPublicKey({ coin, path: accountPath });\n\n if (!success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_get_public_key\",\n info: { chain, error: (payload as { error: string; code?: string }).error || \"Unknown error\" },\n });\n }\n\n return {\n chainCode: payload.chainCode,\n depth: payload.depth,\n fingerprint: payload.fingerprint,\n path: payload.serializedPath,\n publicKey: payload.publicKey,\n xpub: payload.xpub,\n xpubSegwit: payload.xpubSegwit,\n };\n }\n\n async function deriveAddressAtIndex({ index, change = false }: { index: number; change?: boolean }) {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const fullPath = `${accountPath}/${Number(change)}/${index}`;\n\n const { success, payload } = await TrezorConnect.getAddress({ coin, path: fullPath, showOnTrezor: false });\n\n if (!success) {\n return undefined;\n }\n\n let finalAddress = payload.address;\n if (chain === Chain.BitcoinCash) {\n const bchToolbox = await getUtxoToolbox(chain as typeof Chain.BitcoinCash);\n finalAddress = bchToolbox.stripPrefix(payload.address);\n }\n\n const pubKeyResult = await TrezorConnect.getPublicKey({ coin, path: fullPath });\n const pubkey = pubKeyResult.success ? pubKeyResult.payload.publicKey : \"\";\n\n return { address: finalAddress, change, index, pubkey };\n }\n\n async function deriveAddressesBatch({\n count,\n startIndex = 0,\n change = false,\n }: {\n count: number;\n startIndex?: number;\n change?: boolean;\n }) {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n\n const paths = Array.from({ length: count }, (_, i) => ({\n coin,\n path: `${accountPath}/${Number(change)}/${startIndex + i}`,\n showOnTrezor: false,\n }));\n\n const { success, payload } = await TrezorConnect.getAddress({ bundle: paths });\n\n if (!success || !Array.isArray(payload)) {\n return [];\n }\n\n const addresses = await Promise.all(\n payload.map(async (result, i) => {\n let finalAddress = result.address;\n if (chain === Chain.BitcoinCash) {\n const bchToolbox = await getUtxoToolbox(chain as typeof Chain.BitcoinCash);\n finalAddress = bchToolbox.stripPrefix(result.address);\n }\n\n return { address: finalAddress, change, index: startIndex + i, pubkey: \"\" };\n }),\n );\n\n return addresses;\n }\n\n const hdHelpers = createHDWalletHelpers({\n chain,\n deriveAddress: deriveAddressAtIndex,\n getBalance: toolbox.getBalance,\n getUtxos: (addr: string) => getUtxoApi(chain).getUtxos({ address: addr, fetchTxHex: true }),\n });\n\n return {\n ...toolbox,\n ...hdHelpers,\n address,\n deriveAddressAtIndex,\n deriveAddresses: deriveAddressesBatch, // Keep Trezor's optimized batch version\n getExtendedPublicKey,\n signTransaction,\n signTransactionWithMultipleInputs,\n transfer,\n transferFromMultipleAddresses,\n };\n }\n\n default:\n throw new SwapKitError({ errorKey: \"wallet_chain_not_supported\", info: { chain, wallet: WalletOption.TREZOR } });\n }\n}\n\nexport const trezorWallet = createWallet({\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectTrezor(chains: Chain[], derivationPath: DerivationPathArray) {\n const [chain] = filterSupportedChains({ chains, supportedChains, walletType });\n if (!chain) {\n throw new SwapKitError({\n errorKey: \"wallet_chain_not_supported\",\n info: { chain, wallet: WalletOption.TREZOR },\n });\n }\n\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { success } = await TrezorConnect.getDeviceState();\n\n if (!success) {\n const trezorConfig = SKConfig.get(\"integrations\").trezor;\n const manifest = trezorConfig\n ? { ...trezorConfig, appName: (trezorConfig as any).appName || \"SwapKit\" }\n : { appName: \"SwapKit\", appUrl: \"\", email: \"\" };\n TrezorConnect.init({ lazyLoad: true, manifest });\n }\n\n const wallet = await getTrezorWallet({ chain, derivationPath });\n\n addChain({ ...wallet, chain, walletType });\n\n return true;\n },\n directSigningSupport: {\n [Chain.Arbitrum]: true,\n [Chain.Aurora]: true,\n [Chain.Avalanche]: true,\n [Chain.Base]: true,\n [Chain.Berachain]: true,\n [Chain.BinanceSmartChain]: true,\n [Chain.Ethereum]: true,\n [Chain.Gnosis]: true,\n [Chain.Monad]: true,\n [Chain.Optimism]: true,\n [Chain.Polygon]: true,\n [Chain.XLayer]: true,\n // BTC/BCH/DASH/DOGE/LTC/ZEC: pending PSBT→TrezorConnect converter (V3 plan PR)\n },\n name: \"connectTrezor\",\n supportedChains: [\n Chain.Arbitrum,\n Chain.Aurora,\n Chain.Avalanche,\n Chain.Base,\n Chain.Berachain,\n Chain.BinanceSmartChain,\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Dash,\n Chain.Dogecoin,\n Chain.Ethereum,\n Chain.Gnosis,\n Chain.Litecoin,\n Chain.Monad,\n Chain.Optimism,\n Chain.Polygon,\n Chain.XLayer,\n Chain.Zcash,\n ],\n walletType: WalletOption.TREZOR,\n});\n\nexport const TREZOR_SUPPORTED_CHAINS = getWalletSupportedChains(trezorWallet);\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "0B02A6453962F0EF64756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "2F5F05CA1496889064756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -2,9 +2,10 @@ import { Chain } from "@swapkit/helpers";
2
2
  export type { PairingInfo } from "@keepkey/keepkey-sdk";
3
3
  export declare const keepkeyWallet: {
4
4
  connectKeepkey: {
5
- connectWallet: (connectParams: {
5
+ connectWallet: ({ addChain }: {
6
6
  addChain: import("@swapkit/helpers").AddChainType;
7
- }) => (chains: Chain[], derivationPathMap?: Record<Chain, [44, 118, 0, 0, 0] | [44, 931, 0, 0, 0] | [number, number, number, number, number] | [44, 637, 0, 0, 0] | [44, 397, 0, 0, 0] | [0, 0, 0, 0, 0] | [44, 144, 0, 0, 0] | [44, 501, 0, 0, 0] | [44, 607, 0, 0, 0] | [44, 195, 0, 0, 0] | [44, 148, 0, 0, 0] | [44, 784, 0, 0, 0] | [1852, 1815, 0, 0, 0] | [44, 9004, 0, 0, 0] | [number, number, number, number, (number | undefined)?] | [44, 145, 0, 0, 0] | [84, 2, 0, 0, 0] | [44, 3, 0, 0, 0] | [44, 5, 0, 0, 0] | [44, 133, 0, 0, 0]> | undefined) => Promise<boolean>;
7
+ }) => (chains: Chain[], derivationPathMap?: Record<Chain, [44, 118, 0, 0, 0] | [44, 931, 0, 0, 0] | [number, number, number, number, number] | [44, 637, 0, 0, 0] | [44, 60, 0, 0, 0] | [44, 397, 0, 0, 0] | [0, 0, 0, 0, 0] | [44, 144, 0, 0, 0] | [44, 501, 0, 0, 0] | [44, 607, 0, 0, 0] | [44, 195, 0, 0, 0] | [44, 148, 0, 0, 0] | [44, 784, 0, 0, 0] | [1852, 1815, 0, 0, 0] | [44, 9004, 0, 0, 0] | [number, number, number, number, (number | undefined)?] | [44, 145, 0, 0, 0] | [84, 2, 0, 0, 0] | [44, 3, 0, 0, 0] | [44, 5, 0, 0, 0] | [44, 133, 0, 0, 0]> | undefined) => Promise<boolean>;
8
+ directSigningSupport: import("@swapkit/wallet-core").DirectSigningSupport;
8
9
  supportedChains: (Chain.Arbitrum | Chain.Avalanche | Chain.Base | Chain.Berachain | Chain.BinanceSmartChain | Chain.Bitcoin | Chain.BitcoinCash | Chain.Cosmos | Chain.Dash | Chain.Dogecoin | Chain.Ethereum | Chain.Gnosis | Chain.Litecoin | Chain.Maya | Chain.Monad | Chain.Optimism | Chain.Polygon | Chain.Ripple | Chain.THORChain | Chain.XLayer)[];
9
10
  };
10
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/keepkey/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EAON,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AASxD,eAAO,MAAM,aAAa;;;;;;;CA0DxB,CAAC;AAEH,eAAO,MAAM,wBAAwB,6UAA0C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/keepkey/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EAON,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AASxD,eAAO,MAAM,aAAa;;;;;;;;CAyExB,CAAC;AAEH,eAAO,MAAM,wBAAwB,6UAA0C,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import { Chain } from "@swapkit/helpers";
2
2
  export declare const ledgerWallet: {
3
3
  connectLedger: {
4
- connectWallet: (connectParams: {
4
+ connectWallet: ({ addChain }: {
5
5
  addChain: import("@swapkit/helpers").AddChainType;
6
- }) => (chains: Chain[], derivationPath?: [44, 118, 0, 0, 0] | [44, 931, 0, 0, 0] | [number, number, number, number, number] | [44, 637, 0, 0, 0] | [44, 397, 0, 0, 0] | [0, 0, 0, 0, 0] | [44, 144, 0, 0, 0] | [44, 501, 0, 0, 0] | [44, 607, 0, 0, 0] | [44, 195, 0, 0, 0] | [44, 148, 0, 0, 0] | [44, 784, 0, 0, 0] | [1852, 1815, 0, 0, 0] | [44, 9004, 0, 0, 0] | [number, number, number, number, (number | undefined)?] | [44, 145, 0, 0, 0] | [84, 2, 0, 0, 0] | [44, 3, 0, 0, 0] | [44, 5, 0, 0, 0] | [44, 133, 0, 0, 0] | undefined) => Promise<boolean>;
6
+ }) => (chains: Chain[], derivationPath?: [44, 118, 0, 0, 0] | [44, 931, 0, 0, 0] | [number, number, number, number, number] | [44, 637, 0, 0, 0] | [44, 60, 0, 0, 0] | [44, 397, 0, 0, 0] | [0, 0, 0, 0, 0] | [44, 144, 0, 0, 0] | [44, 501, 0, 0, 0] | [44, 607, 0, 0, 0] | [44, 195, 0, 0, 0] | [44, 148, 0, 0, 0] | [44, 784, 0, 0, 0] | [1852, 1815, 0, 0, 0] | [44, 9004, 0, 0, 0] | [number, number, number, number, (number | undefined)?] | [44, 145, 0, 0, 0] | [84, 2, 0, 0, 0] | [44, 3, 0, 0, 0] | [44, 5, 0, 0, 0] | [44, 133, 0, 0, 0] | undefined) => Promise<boolean>;
7
+ directSigningSupport: import("@swapkit/wallet-core").DirectSigningSupport;
7
8
  supportedChains: (Chain.Arbitrum | Chain.Aurora | Chain.Avalanche | Chain.Base | Chain.Berachain | Chain.BinanceSmartChain | Chain.Bitcoin | Chain.BitcoinCash | Chain.Cosmos | Chain.Dash | Chain.Dogecoin | Chain.Ethereum | Chain.Gnosis | Chain.Litecoin | Chain.Monad | Chain.Near | Chain.Optimism | Chain.Polygon | Chain.Ripple | Chain.Sui | Chain.THORChain | Chain.Tron | Chain.XLayer | Chain.Zcash)[];
8
9
  };
9
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ledger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EAYN,MAAM,kBAAkB,CAAC;AAc1B,eAAO,MAAM,YAAY;;;;;;;CAyCvB,CAAC;AAEH,eAAO,MAAM,uBAAuB,mYAAyC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ledger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EAYN,MAAM,kBAAkB,CAAC;AAc1B,eAAO,MAAM,YAAY;;;;;;;;CA8DvB,CAAC;AAEH,eAAO,MAAM,uBAAuB,mYAAyC,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import { Chain } from "@swapkit/helpers";
2
2
  export declare const trezorWallet: {
3
3
  connectTrezor: {
4
- connectWallet: (connectParams: {
4
+ connectWallet: ({ addChain }: {
5
5
  addChain: import("@swapkit/helpers").AddChainType;
6
- }) => (chains: Chain[], derivationPath: [44, 118, 0, 0, 0] | [44, 931, 0, 0, 0] | [number, number, number, number, number] | [44, 637, 0, 0, 0] | [44, 397, 0, 0, 0] | [0, 0, 0, 0, 0] | [44, 144, 0, 0, 0] | [44, 501, 0, 0, 0] | [44, 607, 0, 0, 0] | [44, 195, 0, 0, 0] | [44, 148, 0, 0, 0] | [44, 784, 0, 0, 0] | [1852, 1815, 0, 0, 0] | [44, 9004, 0, 0, 0] | [number, number, number, number, (number | undefined)?] | [44, 145, 0, 0, 0] | [84, 2, 0, 0, 0] | [44, 3, 0, 0, 0] | [44, 5, 0, 0, 0] | [44, 133, 0, 0, 0]) => Promise<boolean>;
6
+ }) => (chains: Chain[], derivationPath: [44, 118, 0, 0, 0] | [44, 931, 0, 0, 0] | [number, number, number, number, number] | [44, 637, 0, 0, 0] | [44, 60, 0, 0, 0] | [44, 397, 0, 0, 0] | [0, 0, 0, 0, 0] | [44, 144, 0, 0, 0] | [44, 501, 0, 0, 0] | [44, 607, 0, 0, 0] | [44, 195, 0, 0, 0] | [44, 148, 0, 0, 0] | [44, 784, 0, 0, 0] | [1852, 1815, 0, 0, 0] | [44, 9004, 0, 0, 0] | [number, number, number, number, (number | undefined)?] | [44, 145, 0, 0, 0] | [84, 2, 0, 0, 0] | [44, 3, 0, 0, 0] | [44, 5, 0, 0, 0] | [44, 133, 0, 0, 0]) => Promise<boolean>;
7
+ directSigningSupport: import("@swapkit/wallet-core").DirectSigningSupport;
7
8
  supportedChains: (Chain.Arbitrum | Chain.Aurora | Chain.Avalanche | Chain.Base | Chain.Berachain | Chain.BinanceSmartChain | Chain.Bitcoin | Chain.BitcoinCash | Chain.Dash | Chain.Dogecoin | Chain.Ethereum | Chain.Gnosis | Chain.Litecoin | Chain.Monad | Chain.Optimism | Chain.Polygon | Chain.XLayer | Chain.Zcash)[];
8
9
  };
9
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/trezor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAUN,MAAM,kBAAkB,CAAC;AAstB1B,eAAO,MAAM,YAAY;;;;;;;CAkDvB,CAAC;AAEH,eAAO,MAAM,uBAAuB,6SAAyC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/trezor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAUN,MAAM,kBAAkB,CAAC;AAstB1B,eAAO,MAAM,YAAY;;;;;;;;CAiEvB,CAAC;AAEH,eAAO,MAAM,uBAAuB,6SAAyC,CAAC"}
package/package.json CHANGED
@@ -21,9 +21,10 @@
21
21
  "@near-js/crypto": "~2.5.0",
22
22
  "@near-js/transactions": "~2.5.0",
23
23
  "@scure/base": "2.0.0",
24
- "@swapkit/helpers": "^4.12.4",
25
- "@swapkit/toolboxes": "^4.13.2",
26
- "@swapkit/utxo-signer": "^2.1.0",
24
+ "@swapkit/helpers": "^4.13.0",
25
+ "@swapkit/wallet-core": "^4.2.0",
26
+ "@swapkit/toolboxes": "^4.14.5",
27
+ "@swapkit/utxo-signer": "^2.1.1",
27
28
  "@trezor/connect-web": "~9.6.4",
28
29
  "cosmjs-types": "~0.10.1",
29
30
  "ethers": "^6.14.0",
@@ -108,5 +109,5 @@
108
109
  "type-check:go": "tsgo"
109
110
  },
110
111
  "type": "module",
111
- "version": "4.6.2"
112
+ "version": "4.7.0"
112
113
  }
@@ -1,5 +0,0 @@
1
- function s({connect:e,name:n,supportedChains:t,walletType:a}){function p(o){return e({...o,supportedChains:t,walletType:a})}return{[n]:{connectWallet:p,supportedChains:t}}}function l(e){let n=Object.keys(e)?.[0]||"";return e?.[n]?.supportedChains||[]}
2
- export{s as a,l as b};
3
-
4
- //# debugId=67D75DE723CA2FF264756E2164756E21
5
- //# sourceMappingURL=chunk-4fapcrj9.js.map
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/core.ts"],
4
- "sourcesContent": [
5
- "import type { AddChainType, Chain, WalletOption } from \"@swapkit/helpers\";\n\nexport function createWallet<\n ConnectParams extends any[],\n SupportedChains extends Chain[],\n const Name extends string,\n WalletType extends WalletOption,\n>({\n connect,\n name,\n supportedChains,\n walletType,\n}: {\n connect: (connectParams: {\n addChain: AddChainType;\n walletType: WalletType;\n supportedChains: SupportedChains;\n }) => (...params: ConnectParams) => Promise<boolean>;\n name: Name;\n supportedChains: SupportedChains;\n walletType?: WalletType | string;\n}) {\n function connectWallet(connectParams: { addChain: AddChainType }) {\n return connect({ ...connectParams, supportedChains, walletType: walletType as WalletType });\n }\n\n return { [name]: { connectWallet, supportedChains } } as unknown as {\n [key in Name]: { connectWallet: typeof connectWallet; supportedChains: SupportedChains };\n };\n}\n\nexport function getWalletSupportedChains<T extends ReturnType<typeof createWallet<any, any, any, any>>>(\n wallet: T,\n): T[keyof T][\"supportedChains\"] {\n const walletName = Object.keys(wallet)?.[0] || \"\";\n return wallet?.[walletName]?.supportedChains || [];\n}\n"
6
- ],
7
- "mappings": "AAEO,SAAS,CAKf,EACC,UACA,OACA,kBACA,cAUC,CACD,SAAS,CAAa,CAAC,EAA2C,CAChE,OAAO,EAAQ,IAAK,EAAe,kBAAiB,WAAY,CAAyB,CAAC,EAG5F,MAAO,EAAG,GAAO,CAAE,gBAAe,iBAAgB,CAAE,EAK/C,SAAS,CAAuF,CACrG,EAC+B,CAC/B,IAAM,EAAa,OAAO,KAAK,CAAM,IAAI,IAAM,GAC/C,OAAO,IAAS,IAAa,iBAAmB,CAAC",
8
- "debugId": "67D75DE723CA2FF264756E2164756E21",
9
- "names": []
10
- }
@@ -1,4 +0,0 @@
1
- function s({connect:e,name:n,supportedChains:t,walletType:a}){function p(o){return e({...o,supportedChains:t,walletType:a})}return{[n]:{connectWallet:p,supportedChains:t}}}function l(e){let n=Object.keys(e)?.[0]||"";return e?.[n]?.supportedChains||[]}
2
-
3
- //# debugId=6306200344541E9764756E2164756E21
4
- //# sourceMappingURL=chunk-jj2v7mke.js.map
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/core.ts"],
4
- "sourcesContent": [
5
- "import type { AddChainType, Chain, WalletOption } from \"@swapkit/helpers\";\n\nexport function createWallet<\n ConnectParams extends any[],\n SupportedChains extends Chain[],\n const Name extends string,\n WalletType extends WalletOption,\n>({\n connect,\n name,\n supportedChains,\n walletType,\n}: {\n connect: (connectParams: {\n addChain: AddChainType;\n walletType: WalletType;\n supportedChains: SupportedChains;\n }) => (...params: ConnectParams) => Promise<boolean>;\n name: Name;\n supportedChains: SupportedChains;\n walletType?: WalletType | string;\n}) {\n function connectWallet(connectParams: { addChain: AddChainType }) {\n return connect({ ...connectParams, supportedChains, walletType: walletType as WalletType });\n }\n\n return { [name]: { connectWallet, supportedChains } } as unknown as {\n [key in Name]: { connectWallet: typeof connectWallet; supportedChains: SupportedChains };\n };\n}\n\nexport function getWalletSupportedChains<T extends ReturnType<typeof createWallet<any, any, any, any>>>(\n wallet: T,\n): T[keyof T][\"supportedChains\"] {\n const walletName = Object.keys(wallet)?.[0] || \"\";\n return wallet?.[walletName]?.supportedChains || [];\n}\n"
6
- ],
7
- "mappings": "AAEO,SAAS,CAKf,EACC,UACA,OACA,kBACA,cAUC,CACD,SAAS,CAAa,CAAC,EAA2C,CAChE,OAAO,EAAQ,IAAK,EAAe,kBAAiB,WAAY,CAAyB,CAAC,EAG5F,MAAO,EAAG,GAAO,CAAE,gBAAe,iBAAgB,CAAE,EAK/C,SAAS,CAAuF,CACrG,EAC+B,CAC/B,IAAM,EAAa,OAAO,KAAK,CAAM,IAAI,IAAM,GAC/C,OAAO,IAAS,IAAa,iBAAmB,CAAC",
8
- "debugId": "6306200344541E9764756E2164756E21",
9
- "names": []
10
- }
@@ -1,18 +0,0 @@
1
- import type { AddChainType, Chain, WalletOption } from "@swapkit/helpers";
2
- export declare function createWallet<ConnectParams extends any[], SupportedChains extends Chain[], const Name extends string, WalletType extends WalletOption>({ connect, name, supportedChains, walletType, }: {
3
- connect: (connectParams: {
4
- addChain: AddChainType;
5
- walletType: WalletType;
6
- supportedChains: SupportedChains;
7
- }) => (...params: ConnectParams) => Promise<boolean>;
8
- name: Name;
9
- supportedChains: SupportedChains;
10
- walletType?: WalletType | string;
11
- }): { [key in Name]: {
12
- connectWallet: (connectParams: {
13
- addChain: AddChainType;
14
- }) => (...params: ConnectParams) => Promise<boolean>;
15
- supportedChains: SupportedChains;
16
- }; };
17
- export declare function getWalletSupportedChains<T extends ReturnType<typeof createWallet<any, any, any, any>>>(wallet: T): T[keyof T]["supportedChains"];
18
- //# sourceMappingURL=core.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE1E,wBAAgB,YAAY,CAC1B,aAAa,SAAS,GAAG,EAAE,EAC3B,eAAe,SAAS,KAAK,EAAE,EAC/B,KAAK,CAAC,IAAI,SAAS,MAAM,EACzB,UAAU,SAAS,YAAY,EAC/B,EACA,OAAO,EACP,IAAI,EACJ,eAAe,EACf,UAAU,GACX,EAAE;IACD,OAAO,EAAE,CAAC,aAAa,EAAE;QACvB,QAAQ,EAAE,YAAY,CAAC;QACvB,UAAU,EAAE,UAAU,CAAC;QACvB,eAAe,EAAE,eAAe,CAAC;KAClC,KAAK,CAAC,GAAG,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,EAAE,IAAI,CAAC;IACX,eAAe,EAAE,eAAe,CAAC;IACjC,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CAClC,GAKqE,GACjE,GAAG,IAAI,IAAI,GAAG;IAAE,aAAa,kBALM;QAAE,QAAQ,EAAE,YAAY,CAAA;KAAE,iBAL9C,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAUG;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,GACzF,CACF;AAED,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EACpG,MAAM,EAAE,CAAC,GACR,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAG/B"}