@swapkit/wallet-hardware 6.2.0 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/THIRD_PARTY_LICENSES.md +4 -4
- package/dist/{chunk-rydhx4se.js → chunk-0k1b2ddn.js} +3 -3
- package/dist/{chunk-rydhx4se.js.map → chunk-0k1b2ddn.js.map} +2 -2
- package/dist/{chunk-j3n6fbqh.js → chunk-2tzsz8f3.js} +4 -4
- package/dist/{chunk-j3n6fbqh.js.map → chunk-2tzsz8f3.js.map} +1 -1
- package/dist/{chunk-2jddegc1.js → chunk-410fpx61.js} +4 -4
- package/dist/{chunk-2jddegc1.js.map → chunk-410fpx61.js.map} +1 -1
- package/dist/chunk-8mkdjmw2.js +4 -0
- package/dist/chunk-8mkdjmw2.js.map +10 -0
- package/dist/{chunk-7kwtpk70.js → chunk-96p7njae.js} +3 -3
- package/dist/{chunk-7kwtpk70.js.map → chunk-96p7njae.js.map} +2 -2
- package/dist/{chunk-g6rrzxcx.js → chunk-97nsp4z6.js} +3 -3
- package/dist/{chunk-g6rrzxcx.js.map → chunk-97nsp4z6.js.map} +1 -1
- package/dist/{chunk-kaw35ae2.js → chunk-9a9gn4pb.js} +3 -3
- package/dist/{chunk-a47dwwv6.js.map → chunk-9a9gn4pb.js.map} +1 -1
- package/dist/chunk-a39rm9nv.js +4 -0
- package/dist/{chunk-42xrtarj.js.map → chunk-a39rm9nv.js.map} +5 -5
- package/dist/chunk-c8mwf9cn.js +4 -0
- package/dist/{chunk-kaw35ae2.js.map → chunk-c8mwf9cn.js.map} +1 -1
- package/dist/{chunk-b7htg03t.js → chunk-dhhmywmb.js} +4 -4
- package/dist/{chunk-b7htg03t.js.map → chunk-dhhmywmb.js.map} +1 -1
- package/dist/{chunk-x28a37pz.js → chunk-dsa641rq.js} +3 -3
- package/dist/{chunk-x28a37pz.js.map → chunk-dsa641rq.js.map} +2 -2
- package/dist/{chunk-7rbvcts9.js → chunk-grj9nvte.js} +3 -3
- package/dist/{chunk-7rbvcts9.js.map → chunk-grj9nvte.js.map} +1 -1
- package/dist/{chunk-tecse0bj.js → chunk-napm4102.js} +3 -3
- package/dist/{chunk-tecse0bj.js.map → chunk-napm4102.js.map} +1 -1
- package/dist/{chunk-a47dwwv6.js → chunk-nb08g045.js} +3 -3
- package/dist/{chunk-sp3dq5hr.js.map → chunk-nb08g045.js.map} +1 -1
- package/dist/chunk-npe2r2ge.js +4 -0
- package/dist/{chunk-tm5gk51g.js.map → chunk-npe2r2ge.js.map} +1 -1
- package/dist/chunk-p9mwkgye.js +4 -0
- package/dist/{chunk-s2akss77.js.map → chunk-p9mwkgye.js.map} +14 -12
- package/dist/{chunk-b093ajcq.js → chunk-qjp8j8e5.js} +3 -3
- package/dist/{chunk-b093ajcq.js.map → chunk-qjp8j8e5.js.map} +1 -1
- package/dist/{chunk-71kfnwdp.js → chunk-r1fk1sx9.js} +3 -3
- package/dist/{chunk-71kfnwdp.js.map → chunk-r1fk1sx9.js.map} +1 -1
- package/dist/{chunk-5xg0xc0g.js → chunk-ta7bqmy3.js} +3 -3
- package/dist/{chunk-5xg0xc0g.js.map → chunk-ta7bqmy3.js.map} +1 -1
- package/dist/{chunk-545s1tsc.js → chunk-tgvgr630.js} +3 -3
- package/dist/{chunk-545s1tsc.js.map → chunk-tgvgr630.js.map} +2 -2
- package/dist/{chunk-035dayv6.js → chunk-v8x9ptxs.js} +3 -3
- package/dist/{chunk-035dayv6.js.map → chunk-v8x9ptxs.js.map} +1 -1
- package/dist/{chunk-mzan0m09.js → chunk-wm89desc.js} +20 -20
- package/dist/{chunk-mzan0m09.js.map → chunk-wm89desc.js.map} +12 -10
- package/dist/{chunk-a6vcbcyd.js → chunk-wtyhjt5e.js} +3 -3
- package/dist/{chunk-a6vcbcyd.js.map → chunk-wtyhjt5e.js.map} +1 -1
- package/dist/{chunk-s5a5v0m1.js → chunk-xskdbz15.js} +3 -3
- package/dist/{chunk-s5a5v0m1.js.map → chunk-xskdbz15.js.map} +2 -2
- package/dist/{chunk-sbebfr50.js → chunk-ytjqb1sd.js} +3 -3
- package/dist/{chunk-sbebfr50.js.map → chunk-ytjqb1sd.js.map} +1 -1
- package/dist/{chunk-ys51wj1c.js → chunk-zbesf7sy.js} +3 -3
- package/dist/{chunk-ys51wj1c.js.map → chunk-zbesf7sy.js.map} +1 -1
- package/dist/keepkey/index.js +2 -2
- package/dist/keepkey/index.js.map +1 -1
- package/dist/ledger/index.cjs +28 -28
- package/dist/ledger/index.cjs.map +28 -24
- package/dist/ledger/index.js +2 -2
- package/dist/ledger/index.js.map +4 -4
- package/dist/trezor/index.cjs +2 -2
- package/dist/trezor/index.cjs.map +5 -4
- package/dist/trezor/index.js +2 -2
- package/dist/trezor/index.js.map +3 -3
- package/dist/types/ledger/clients/zcash.d.ts.map +1 -1
- package/dist/types/trezor/hypercoreSigner.d.ts +22 -0
- package/dist/types/trezor/hypercoreSigner.d.ts.map +1 -0
- package/dist/types/trezor/index.d.ts +2 -2
- package/dist/types/trezor/index.d.ts.map +1 -1
- package/package.json +12 -12
- package/src/ledger/clients/zcash.ts +16 -6
- package/src/ledger/index.ts +2 -2
- package/src/trezor/hypercoreSigner.ts +96 -0
- package/src/trezor/index.ts +72 -16
- package/dist/chunk-42xrtarj.js +0 -4
- package/dist/chunk-s2akss77.js +0 -4
- package/dist/chunk-sp3dq5hr.js +0 -4
- package/dist/chunk-tm5gk51g.js +0 -4
package/dist/trezor/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Tf=Object.create;var{getPrototypeOf:Rf,defineProperty:XU,getOwnPropertyNames:CU,getOwnPropertyDescriptor:mf}=Object,FU=Object.prototype.hasOwnProperty;function IU(U){return this[U]}var kf,Ef,E$=(U,f,$)=>{var _=U!=null&&typeof U==="object";if(_){var N=f?kf??=new WeakMap:Ef??=new WeakMap,A=N.get(U);if(A)return A}$=U!=null?Tf(Rf(U)):{};let B=f||!U||!U.__esModule?XU($,"default",{value:U,enumerable:!0}):$;for(let Y of CU(U))if(!FU.call(B,Y))XU(B,Y,{get:IU.bind(U,Y),enumerable:!0});if(_)N.set(U,B);return B},Hf=(U)=>{var f=(zU??=new WeakMap).get(U),$;if(f)return f;if(f=XU({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function"){for(var _ of CU(U))if(!FU.call(f,_))XU(f,_,{get:IU.bind(U,_),enumerable:!($=mf(U,_))||$.enumerable})}return zU.set(U,f),f},zU,H$=(U,f)=>()=>(f||U((f={exports:{}}).exports,f),f.exports);var Sf=(U)=>U;function zf(U,f){this[U]=Sf.bind(null,f)}var a=(U,f)=>{for(var $ in f)XU(U,$,{get:f[$],enumerable:!0,configurable:!0,set:zf.bind(f,$)})};var t=(U,f)=>()=>(U&&(f=U(U=0)),f);var gU={};a(gU,{getEVMSigner:()=>Cf});async function Cf({chain:U,derivationPath:f,provider:$}){let{AbstractSigner:_}=await import("ethers");class N extends _{address;chain;derivationPath;provider;constructor({chain:A,derivationPath:B,provider:Y}){super(Y);this.address="",this.chain=A,this.derivationPath=B,this.provider=Y}getAddress=async()=>{if(!this.address){let B=await(await import("@trezor/connect-web")).default.ethereumGetAddress({path:v.derivationPathToString(this.derivationPath),showOnTrezor:!0});if(!B.success)throw new v.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{...B,chain:this.chain,derivationPath:this.derivationPath}});this.address=B.payload.address}return this.address};signMessage=async(A)=>{let Y=await(await import("@trezor/connect-web")).default.ethereumSignMessage({message:A,path:v.derivationPathToString(this.derivationPath)});if(!Y.success)throw new v.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...Y,chain:this.chain,derivationPath:this.derivationPath,message:A}});return Y.payload.signature};signTypedData=async(A,B,Y,q)=>{let X=(await import("@trezor/connect-web")).default,{buildEIP712DomainType:J}=await import("@swapkit/toolboxes/evm"),{TypedDataEncoder:L}=await import("ethers"),{EIP712Domain:V,...j}=B,R=q??L.from(j).primaryType,S=J(A),Q={domain:A,message:Y,primaryType:R,types:{EIP712Domain:S,...j}},O=await X.ethereumSignTypedData({data:Q,metamask_v4_compat:!0,path:v.derivationPathToString(this.derivationPath)});if(!O.success)throw new v.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:this.chain,error:O.payload.error}});return O.payload.signature.startsWith("0x")?O.payload.signature:`0x${O.payload.signature}`};signTransaction=async({to:A,gasLimit:B,value:Y,data:q,nonce:X,maxFeePerGas:J,maxPriorityFeePerGas:L,gasPrice:V})=>{if(!A)throw new v.SwapKitError({errorKey:"wallet_missing_params",info:{to:A}});if(!B)throw new v.SwapKitError({errorKey:"wallet_missing_params",info:{gasLimit:B}});let j=J!=null||L!=null;if(j&&!J)throw new v.SwapKitError({errorKey:"wallet_missing_params",info:{maxFeePerGas:J}});if(!(j||V))throw new v.SwapKitError({errorKey:"wallet_missing_params",info:{gasPrice:V}});let R=(await import("@trezor/connect-web")).default,{toHexString:S}=await import("@swapkit/toolboxes/evm"),Q=j?{maxFeePerGas:S(BigInt(J?.toString()||0)),maxPriorityFeePerGas:S(BigInt(L?.toString()||0))}:V&&{gasPrice:S(BigInt(V?.toString()||0))}||{gasPrice:"0x0"},O=S(BigInt(X||await this.provider.getTransactionCount(await this.getAddress(),"pending"))),w={chainId:Number.parseInt(v.ChainToChainId[this.chain],10),data:q?.toString()||"0x",gasLimit:S(BigInt(B?.toString()||0)),nonce:O,to:A.toString(),value:S(BigInt(Y?.toString()||0)),...Q},{success:I,payload:y}=await R.ethereumSignTransaction({path:v.derivationPathToString(this.derivationPath),transaction:w});if(!I)throw new v.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...y,chain:this.chain,derivationPath:this.derivationPath}});let l=y.serializedTx?y.serializedTx.startsWith("0x")?y.serializedTx:`0x${y.serializedTx}`:void 0;if(!l)throw new v.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:this.chain,derivationPath:this.derivationPath}});return l};connect=(A)=>{if(!A)throw new v.SwapKitError({errorKey:"wallet_provider_not_found",info:{chain:this.chain,derivationPath:this.derivationPath,wallet:v.WalletOption.TREZOR}});return new N({chain:this.chain,derivationPath:this.derivationPath,provider:A})}}return new N({chain:U,derivationPath:f,provider:$})}var v;var KU=t(()=>{v=require("@swapkit/helpers")});function AU(U,f,$){let N=typeof U==="object"&&U!==null&&"toFixed"in U||Number.isSafeInteger(U)?String(U.toFixed()):"";if(!/^\d+$/.test(N))throw $(`Invalid ${f} in Cardano transaction`);return N}function Ff(U,f){if(!(U instanceof Map))throw f("Invalid Cardano output value");return[...U].map(([$,_])=>({policyId:$,tokens:[..._].map(([N,A])=>({amount:AU(A,"token amount",f),assetName:N}))}))}function If(U,f,$){let _,N,A;if(Array.isArray(U)){if(U.length!==2)throw $(`${f} cannot sign Cardano outputs with a datum`);[_,N]=U,A="legacy"}else if(U instanceof Map){if(U.has(2))throw $(`${f} cannot sign Cardano outputs with a datum`);if(U.has(3))throw $(`${f} cannot sign Cardano outputs with a reference script`);if([...U.keys()].some((q)=>q!==0&&q!==1))throw $("Unsupported field in Cardano output");_=U.get(0),N=U.get(1),A="babbage"}else throw $("Invalid Cardano output");if(!(_ instanceof Uint8Array))throw $("Invalid Cardano output address");if(Array.isArray(N)&&N.length!==2)throw $("Invalid Cardano output value");let[B,Y]=Array.isArray(N)?N:[N];return{address:_,amount:AU(B,"output amount",$),format:A,tokenGroups:Y===void 0?void 0:Ff(Y,$)}}function yU(U,f,$){let _=Object.values(e),N=[...U.keys()].filter((j)=>!_.includes(j));if(N.length>0)throw $(`${f} cannot sign Cardano transactions with body fields ${N.join(", ")}`);let A=U.get(e.INPUTS),B=typeof A==="object"&&A!==null&&"tag"in A&&A.tag===258&&"value"in A,Y=B?A.value:A;if(!Array.isArray(Y))throw $("Invalid Cardano inputs");let q=Y.map((j)=>{if(!Array.isArray(j)||j.length!==2)throw $("Invalid Cardano input");let[R,S]=j;if(!(R instanceof Uint8Array))throw $("Invalid Cardano input");return{index:Number(AU(S,"input index",$)),txHash:R}}),X=U.get(e.OUTPUTS);if(!Array.isArray(X))throw $("Invalid Cardano outputs");let J=U.get(e.AUXILIARY_DATA_HASH);if(J!==void 0&&!(J instanceof Uint8Array))throw $("Invalid Cardano auxiliary data hash");let L=U.get(e.TTL),V=U.get(e.VALIDITY_INTERVAL_START);return{auxiliaryDataHash:J,fee:AU(U.get(e.FEE),"fee",$),inputs:q,outputs:X.map((j)=>If(j,f,$)),tagCborSets:B,ttl:L===void 0?void 0:AU(L,"ttl",$),validityIntervalStart:V===void 0?void 0:AU(V,"validity interval start",$)}}var e;var vU=t(()=>{e={AUXILIARY_DATA_HASH:7,FEE:2,INPUTS:0,OUTPUTS:1,TTL:3,VALIDITY_INTERVAL_START:8}});var cU={};a(cU,{toTrezorCardanoTransaction:()=>hU,getCardanoSigner:()=>Kf,addTrezorWitnesses:()=>lU});function PU({CARDANO:U,PROTO:f}){return{derivationType:f.CardanoDerivationType.ICARUS,mainnet:{networkId:U.NETWORK_IDS.mainnet,protocolMagic:U.PROTOCOL_MAGICS.mainnet}}}function bf(U){return new u.SwapKitError({errorKey:"wallet_trezor_method_not_supported",info:{chain:u.Chain.Cardano,reason:U}})}function wU(U){return new u.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:u.Chain.Cardano,error:U}})}async function gf({address:U,amount:f,format:$,tokenGroups:_},N,A){let B=await x.getCardanoAddressFromBytes(U),Y=B===N.address?{addressParameters:{addressType:A.CardanoAddressType.BASE,path:N.path,stakingPath:N.stakingPath}}:{address:B},q=_?.map(({policyId:X,tokens:J})=>({policyId:UU.hex.encode(X),tokenAmounts:J.map(({amount:L,assetName:V})=>({amount:L,assetNameBytes:UU.hex.encode(V)}))}));return{...Y,amount:f,format:$==="legacy"?A.CardanoTxOutputSerializationFormat.ARRAY_LEGACY:A.CardanoTxOutputSerializationFormat.MAP_BABBAGE,...q===void 0?{}:{tokenBundle:q}}}async function hU(U,f,$){let{body:_}=await x.decodeCardanoTransaction(U),{derivationType:N,mainnet:A}=PU($),{PROTO:B}=$,{auxiliaryDataHash:Y,fee:q,inputs:X,outputs:J,tagCborSets:L,ttl:V,validityIntervalStart:j}=yU(_,"Trezor",bf);return{inputs:X.map(({index:R,txHash:S})=>({path:f.path,prev_hash:UU.hex.encode(S),prev_index:R})),tagCborSets:L,...A,derivationType:N,fee:q,outputs:await Promise.all(J.map((R)=>gf(R,f,B))),signingMode:B.CardanoTxSigningMode.ORDINARY_TRANSACTION,...Y?{auxiliaryData:{hash:UU.hex.encode(Y)}}:{},...V===void 0?{}:{ttl:V},...j===void 0?{}:{validityIntervalStart:j}}}async function lU(U,{hash:f,witnesses:$},_,{PROTO:N}){let{bodyHash:A}=await x.decodeCardanoTransaction(U);if(f.toLowerCase()!==A)throw wU("Trezor signed a different transaction body");let B=$.map(({pubKey:Y,signature:q,type:X})=>{if(X!==N.CardanoTxWitnessType.SHELLEY_WITNESS||Y.toLowerCase()!==_)throw wU("Trezor returned a witness for an unexpected key");return{publicKey:UU.hex.decode(Y),signature:UU.hex.decode(q)}});return x.addCardanoVkeyWitnesses(U,B)}async function Kf({connect:U,derivationPath:f}){let[$,_,N,A,B]=f;if(f.length!==5||A!==0||B===void 0)throw new u.SwapKitError({errorKey:"wallet_trezor_derivation_path_not_supported",info:{chain:u.Chain.Cardano,derivationPath:f}});let Y=u.derivationPathToString(f),q=u.derivationPathToString([$,_,N,2,0]),{derivationType:X,mainnet:J}=PU(U),L=U.default,V=await L.cardanoGetPublicKey({bundle:[Y,q].map((w)=>({derivationType:X,path:w}))});if(!V.success)throw new u.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:u.Chain.Cardano,derivationPath:f,error:V.payload.error}});let[j,R]=V.payload.map(({node:w})=>Buffer.from(w.public_key,"hex")),S=await x.getCardanoPublicKeyHash(j),Q=await x.getCardanoAddressFromBytes(Buffer.concat([Buffer.from([J.networkId]),S,await x.getCardanoPublicKeyHash(R)]));async function O(w){let I=await hU(w,{address:Q,path:Y,stakingPath:q},U),y=await L.cardanoSignTransaction(I);if(!y.success)throw wU(y.payload.error);return lU(w,y.payload,j.toString("hex"),U)}return{getAddress:()=>Q,publicKey:j,publicKeyHash:S,signTransaction:O}}var UU,u,x;var uU=t(()=>{vU();UU=require("@scure/base"),u=require("@swapkit/helpers"),x=require("@swapkit/toolboxes/cardano")});var pU={};a(pU,{toTrezorRippleTransaction:()=>xU,getRippleSigner:()=>vf});function n(U){return new p.SwapKitError({errorKey:"wallet_trezor_method_not_supported",info:{chain:p.Chain.Ripple,reason:U}})}function xU(U){let f=U;if(f.TransactionType!=="Payment")throw n(`Trezor only signs XRP payments, got ${String(f.TransactionType)}`);let $=Object.keys(f).filter((J)=>f[J]!==void 0&&f[J]!==null&&!yf.has(J));if($.length>0)throw n(`Trezor cannot sign XRP payments with ${$.join(", ")}`);let{Amount:_,Destination:N,DestinationTag:A,Fee:B,Flags:Y,LastLedgerSequence:q,Sequence:X}=f;if(typeof _!=="string"||!/^\d+$/.test(_))throw n("Trezor only signs native XRP amounts");if(typeof N!=="string")throw n("Missing destination");if(!NU.isValidClassicAddress(N))throw n("Destination must be a classic XRP address");if(typeof B!=="string"||typeof X!=="number")throw n("Transaction is not autofilled");if(Y!==void 0&&typeof Y!=="number")throw n("Flags must be numeric");if(((Y??0)&NU.GlobalFlags.tfInnerBatchTxn)!==0)throw n("Trezor cannot sign Batch inner XRP transactions");return{fee:B,flags:Y,maxLedgerVersion:q,payment:{amount:_,destination:N,destinationTag:A},sequence:X}}function vf({derivationPath:U}){let f=p.derivationPathToString(U),$="";async function _(){if($)return $;let B=await(await import("@trezor/connect-web")).default.rippleGetAddress({path:f,showOnTrezor:!0});if(!B.success)throw new p.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:p.Chain.Ripple,derivationPath:U,error:B.payload.error}});return $=B.payload.address,$}async function N(A){let B=xU(A);if(A.Account!==await _())throw n("Transaction account does not match the Trezor address");let q=await(await import("@trezor/connect-web")).default.rippleSignTransaction({path:f,transaction:B});if(!q.success)throw new p.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:p.Chain.Ripple,error:q.payload.error}});let X=q.payload.serializedTx.toUpperCase();return{hash:NU.hashes.hashSignedTx(X),tx_blob:X}}return{getAddress:_,signTransaction:N}}var p,NU,yf;var rU=t(()=>{p=require("@swapkit/helpers"),NU=require("xrpl"),yf=new Set(["Account","Amount","Destination","DestinationTag","Fee","Flags","LastLedgerSequence","Sequence","SigningPubKey","TransactionType"])});var dU={};a(dU,{getSolanaSigner:()=>uf});function Pf(U){return new P.SwapKitError({errorKey:"wallet_trezor_method_not_supported",info:{chain:P.Chain.Solana,reason:U}})}function hf(U){if("version"in U){let{header:f,staticAccountKeys:$}=U.message;return{message:U.message.serialize(),signerKeys:$.slice(0,f.numRequiredSignatures)}}return{message:U.serializeMessage(),signerKeys:U.signatures.map(({publicKey:f})=>f)}}function lf(U,f){let{message:$,signerKeys:_}=hf(U),N=_.find((A)=>A.toBase58()===f);if(!N)throw Pf("Trezor account is not a required signer of this transaction");return{message:$,signerKey:N}}function cf(U,{message:f,signature:$,signerKey:_}){if($.length!==64)throw new P.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:P.Chain.Solana,error:`Invalid signature length: ${$.length}`}});if(!sU.ed25519.verify($,f,_.toBytes()))throw new P.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:P.Chain.Solana,error:"Signature does not match the Trezor account"}});return U.addSignature(_,Buffer.from($)),U}function uf({address:U,derivationPath:f}){let[$,_]=f;if($!==44||_!==501||f.length>4)throw new P.SwapKitError({errorKey:"wallet_trezor_derivation_path_not_supported",info:{chain:P.Chain.Solana,derivationPath:f}});let N=P.derivationPathToString(f,{allHardened:!0}),A=U?new QU.PublicKey(U):null,B=null;async function Y(X){if(B)return B.toBase58();let L=await(await import("@trezor/connect-web")).default.solanaGetAddress({path:N,showOnTrezor:X});if(!L.success)throw new P.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:P.Chain.Solana,derivationPath:f,error:L.payload.error}});let V=new QU.PublicKey(L.payload.address);if(A&&!V.equals(A))throw new P.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:P.Chain.Solana,derivationPath:f,error:"Trezor account does not match the restored address"}});return B=V,L.payload.address}async function q(X){let{message:J,signerKey:L}=lf(X,await Y(!1)),j=await(await import("@trezor/connect-web")).default.solanaSignTransaction({path:N,serializedTx:DU.hex.encode(J)});if(!j.success)throw new P.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:P.Chain.Solana,error:j.payload.error}});let R=DU.hex.decode(j.payload.signature.replace(/^0x/,""));return cf(X,{message:J,signature:R,signerKey:L})}return{connect:async()=>({publicKey:new QU.PublicKey(await Y(!0))}),disconnect:()=>Promise.resolve(),getAddress:()=>Y(!0),get publicKey(){return B??A},signTransaction:q}}var sU,DU,QU,P;var nU=t(()=>{sU=require("@noble/curves/ed25519.js"),DU=require("@scure/base"),QU=require("@solana/web3.js"),P=require("@swapkit/helpers")});var tU={};a(tU,{toTrezorStellarTransaction:()=>aU,getStellarSigner:()=>of});function r(U){return new c.SwapKitError({errorKey:"wallet_trezor_method_not_supported",info:{chain:c.Chain.Stellar,reason:U}})}function RU(U){let f=/^(\d+)(?:\.(\d{1,7}))?$/.exec(U);if(!f)throw r(`Invalid Stellar amount: ${U}`);let[,$="0",_=""]=f;return BigInt(`${$}${_.padEnd(xf,"0")}`).toString()}function oU(U){if(!/^\d+$/.test(U)||BigInt(U)>pf)throw r(`Unsupported Stellar time bound: ${U}`);return Number(U)}function iU(U){let f=rf[U.getAssetType()];if(!f||!("getCode"in U))throw r("Trezor does not support liquidity pool assets");return f==="NATIVE"?{type:f}:{code:U.getCode(),issuer:U.getIssuer(),type:f}}function sf({source:U,...f}){let $=U?{source:U}:{};switch(f.type){case"payment":return{...$,amount:RU(f.amount),asset:iU(f.asset),destination:f.destination,type:"payment"};case"createAccount":return{...$,destination:f.destination,startingBalance:RU(f.startingBalance),type:"createAccount"};case"changeTrust":return{...$,limit:RU(f.limit),line:iU(f.line),type:"changeTrust"};default:throw r(`Unsupported Stellar operation: ${f.type}`)}}function df(U){if(typeof U==="string")return U;try{return new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}).decode(U??void 0)}catch{throw r("Trezor only signs UTF-8 text memos")}}function nf({type:U,value:f}){switch(U){case"none":return;case"text":return{text:df(f),type:TU.text};case"id":return{id:String(f),type:TU.id};case"hash":case"return":return{hash:Buffer.from(f??"").toString("hex"),type:TU[U]};default:throw r(`Unsupported Stellar memo type: ${U}`)}}function aU(U){if("innerTransaction"in U)throw r("Trezor cannot sign fee bump transactions");if(!U.timeBounds)throw r("Trezor requires transaction time bounds");let{extraSigners:f,ledgerBounds:$,minAccountSequence:_,minAccountSequenceAge:N,minAccountSequenceLedgerGap:A}=U;if([$,_,N,A].some((Y)=>Y!==void 0)||f?.length)throw r("Trezor cannot sign Stellar transactions with extra preconditions");return{networkPassphrase:U.networkPassphrase,transaction:{fee:Number(U.fee),memo:nf(U.memo),operations:U.operations.map(sf),sequence:U.sequence,source:U.source,timebounds:{maxTime:oU(U.timeBounds.maxTime),minTime:oU(U.timeBounds.minTime)}}}}function of({derivationPath:U}){if(U[3]||U[4])throw new c.SwapKitError({errorKey:"wallet_trezor_derivation_path_not_supported",info:{chain:c.Chain.Stellar,derivationPath:U,reason:"Stellar only uses m/44'/148'/x'"}});let f=c.derivationPathToString(U.slice(0,3)),$="";async function _(){if($)return $;let B=await(await import("@trezor/connect-web")).default.stellarGetAddress({path:f,showOnTrezor:!0});if(!B.success)throw new c.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:c.Chain.Stellar,derivationPath:U,error:B.payload.error}});return $=B.payload.address,$}async function N(A){let B=aU(A);if(B.transaction.source!==await _())throw r("Transaction source does not match the Trezor address");let q=await(await import("@trezor/connect-web")).default.stellarSignTransaction({path:f,...B});if(!q.success)throw new c.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:c.Chain.Stellar,error:q.payload.error}});try{A.addSignature($,Buffer.from(q.payload.signature,"hex").toString("base64"))}catch(X){throw new c.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:c.Chain.Stellar,error:X}})}return A}return{getAddress:_,signTransaction:N}}var c,xf=7,pf=4294967295n,rf,TU;var eU=t(()=>{c=require("@swapkit/helpers"),rf={credit_alphanum4:"ALPHANUM4",credit_alphanum12:"ALPHANUM12",native:"NATIVE"},TU={hash:3,id:2,return:4,text:1}});var Mf={};a(Mf,{toTrezorTronContract:()=>$f,getTronSigner:()=>M$});function BU(U){return new s.SwapKitError({errorKey:"wallet_trezor_method_not_supported",info:{chain:s.Chain.Tron,reason:U}})}function mU(U,f,$){let _=Object.keys(U).filter((N)=>!f.has(N)&&!f$.includes(U[N]));if(_.length>0)throw BU(`Trezor cannot sign Tron ${$} with ${_.join(", ")}`)}function Uf(U,f){let $=U[f];if(typeof $!=="string"||!$)throw BU(`Missing ${f} in Tron contract`);return $}function $$(U){let{amount:f}=U;if(!(typeof f==="number"&&Number.isSafeInteger(f)&&f>0||typeof f==="string"&&/^[1-9]\d*$/.test(f)))throw BU("Invalid amount in Tron contract");return String(f)}function $f(U){let[f,...$]=U.raw_data.contract;if(!f||$.length>0)throw BU("Trezor signs Tron transactions with exactly one contract");let _=f.parameter.value,N=U$[f.type];if(!N)throw BU(`Unsupported Tron contract type: ${f.type}`);mU(U.raw_data,tf,"transactions"),mU(f,ef,"contracts"),mU(_,N,f.type);let A=(Y)=>{let q=Uf(_,Y);if(U.visible!==!1)return ff.tronAddressToHex(q);if(af.test(q))return q.toLowerCase();throw BU(`Invalid hex ${Y} in Tron contract`)},B=A("owner_address");if(f.type==="TransferContract")return{parameter:{value:{amount:$$(_),owner_address:B,to_address:A("to_address")}},type:"TransferContract"};return{parameter:{value:{contract_address:A("contract_address"),data:Uf(_,"data"),owner_address:B}},type:"TriggerSmartContract"}}function M$({address:U,derivationPath:f}){let $=s.derivationPathToString(f),_=U??"";return{getAddress:async()=>{if(_)return _;let A=await(await import("@trezor/connect-web")).default.tronGetAddress({path:$,showOnTrezor:!0});if(!A.success)throw new s.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:s.Chain.Tron,derivationPath:f,error:A.payload.error}});return _=A.payload.address,_},signTransaction:async(N)=>{let A=$f(N),B=(await import("@trezor/connect-web")).default,{data:Y,expiration:q,fee_limit:X,ref_block_bytes:J,ref_block_hash:L,timestamp:V}=N.raw_data,j=await B.tronSignTransaction({contract:[A],data:Y,expiration:q,fee_limit:X,path:$,ref_block_bytes:J,ref_block_hash:L,timestamp:V});if(!j.success)throw new s.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:s.Chain.Tron,error:j.payload.error}});return{...N,signature:[j.payload.signature.replace(/^0x/,"")]}}}}var s,ff,af,tf,ef,U$,f$;var Af=t(()=>{s=require("@swapkit/helpers"),ff=require("@swapkit/toolboxes/tron"),af=/^41[0-9a-f]{40}$/i,tf=new Set(["contract","data","expiration","fee_limit","ref_block_bytes","ref_block_hash","timestamp"]),ef=new Set(["parameter","type"]),U$={TransferContract:new Set(["amount","owner_address","to_address"]),TriggerSmartContract:new Set(["contract_address","data","owner_address"])},f$=[void 0,null,0,"",!1]});var k$={};a(k$,{trezorWallet:()=>Gf,normalizeTrezorSignature:()=>Zf,normalizeTrezorExtendedPublicKey:()=>WU,getTrezorExtendedPublicKey:()=>Vf,TREZOR_SUPPORTED_CHAINS:()=>m$});module.exports=Hf(k$);var fU=require("@scure/base"),VU=require("@scure/bip32"),M=require("@swapkit/helpers"),H=require("@swapkit/toolboxes/utxo"),GU=require("@swapkit/wallet-core");async function bU({chain:U,indexes:f,publicKey:$,tx:_}){let{getMissingSpendingMetadata:N,getNetworkForChain:A}=await import("@swapkit/toolboxes/utxo");for(let{index:B,...Y}of N({chain:U,indexes:f,network:A(U),publicKey:$,tx:_}))_.updateInput(B,Y)}var A$=new Set(["auto","iframe","popup","suite-desktop","suite-web"]),N$=new Set(["BridgeTransport","WebUsbTransport","NodeUsbTransport"]),Yf="auto",JU={appName:"SwapKit",appUrl:"https://swapkit.dev",email:"support@swapkit.dev"},qf=["WebUsbTransport"],jU={keepSession:!0},B$=65,LU=new Map,$U,_$=[M.Chain.Bitcoin,M.Chain.BitcoinCash,M.Chain.Dash,M.Chain.Dogecoin,M.Chain.Litecoin].map((U)=>H.getNetworkForChain(U).bip32);async function Y$(){LU.clear();let U=(async()=>{try{await(await import("@trezor/connect-web")).default.dispose()}catch{}})();if($U=U,await U,$U===U)$U=void 0}function Xf(U){return typeof U==="string"&&A$.has(U)?U:void 0}function jf(U){if(!Array.isArray(U))return;let f=U.filter(($)=>typeof $==="string"&&N$.has($));return f.length>0?f:void 0}function YU(U,f){return typeof U==="string"&&U.trim()?U:f}function Jf(){return typeof globalThis.location<"u"&&globalThis.location.origin?globalThis.location.origin:JU.appUrl}async function q$(){let U=(await import("@trezor/connect-web")).default,f=M.SKConfig.get("integrations").trezor,{connectSrc:$,coreMode:_,debug:N,interactionTimeout:A,lazyLoad:B,pendingTransportEvent:Y,popup:q,transportReconnect:X,transports:J,...L}=f??{},V={...L,appName:YU(f?.appName,JU.appName),appUrl:YU(f?.appUrl,Jf()),email:YU(f?.email,JU.email)},j=typeof globalThis.location<"u"&&["localhost","127.0.0.1"].includes(globalThis.location.hostname),R=Xf(_)??Yf,S=jf(J)??qf;if($U)await $U;if(j)await U.dispose();return await U.init({connectSrc:$,coreMode:R,debug:N,interactionTimeout:A,lazyLoad:B??!1,manifest:V,pendingTransportEvent:Y,popup:q??!0,transportReconnect:X,transports:S}),{coreMode:R,isLocalhost:j,popup:q??!0,TrezorConnect:U}}function WU(U,f){let $=H.getNetworkForChain(f).bip32,_=[$,..._$.filter((A)=>A.public!==$.public||A.private!==$.private)],N;for(let A of _)try{let B=VU.HDKey.fromExtendedKey(U,A);if(!(B.publicKey&&B.chainCode))throw Error("Extended key is missing public key data");return new VU.HDKey({chainCode:B.chainCode,depth:B.depth,index:B.index,parentFingerprint:B.parentFingerprint,publicKey:B.publicKey,versions:$}).publicExtendedKey}catch(B){N=B}throw N instanceof Error?N:Error("Unable to parse Trezor extended public key")}function Lf(U,f){if(!U)return;try{return WU(U,f)}catch{return U}}async function Qf(U){let{Script:f}=await import("@swapkit/utxo-signer");try{let[$,_]=f.decode(U),N=_===0?new Uint8Array:_;if($!=="RETURN"||!(N instanceof Uint8Array))return null;return fU.hex.encode(f.encode(["RETURN",N]))===fU.hex.encode(U)?fU.hex.encode(N):null}catch{return null}}async function EU(U,f,$){if(f!==0n)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:$,error:"OP_RETURN output carrying value cannot be signed"}});let _=await Qf(U);if(_===null)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:$,error:"Malformed OP_RETURN output cannot be signed"}});return{amount:"0",op_return_data:_,script_type:"PAYTOOPRETURN"}}async function Nf(U,f,$){if(!f)return;let _=fU.hex.encode(new TextEncoder().encode(f));for(let N=0;N<U.outputsLength;N++){let A=U.getOutput(N).script;if(A?.[0]===106&&await Qf(A)===_)return}throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:$,error:"Transaction does not carry the provided memo"}})}function X$(U,f){switch(f[0]){case 86:return U===M.Chain.Bitcoin?{input:"SPENDTAPROOT",output:"PAYTOTAPROOT",utxo:M.UTXOScriptType.P2TR}:null;case 84:return{input:"SPENDWITNESS",output:"PAYTOWITNESS",utxo:M.UTXOScriptType.P2WPKH};case 49:return{input:"SPENDP2SHWITNESS",output:"PAYTOP2SHWITNESS",utxo:M.UTXOScriptType.P2SH_P2WPKH};case 44:return{input:"SPENDADDRESS",output:"PAYTOADDRESS",utxo:M.UTXOScriptType.P2PKH};default:return null}}function _U(U){return U.map((f,$)=>$<3?(f|2147483648)>>>0:f)}function j$(U){return Array.isArray(U)&&U[0]instanceof Uint8Array&&typeof U[1]==="object"&&U[1]!==null&&typeof U[1].fingerprint==="number"&&Array.isArray(U[1].path)}function J$(U){if(!Array.isArray(U.bip32Derivation))return;let[f]=U.bip32Derivation;return j$(f)?f:void 0}function L$(U){if(!(Array.isArray(U)&&U[0]instanceof Uint8Array))return!1;let f=U[1];return Array.isArray(f?.hashes)&&Array.isArray(f?.der?.path)}function Q$(U,f){let $=Array.isArray(U.tapBip32Derivation)?U.tapBip32Derivation:[];if($.length===0)return;let{tapInternalKey:_}=U,N=$.filter((Y)=>L$(Y)&&Y[1].hashes.length===0&&(!_||fU.hex.encode(Y[0])===fU.hex.encode(_))),[A,B]=N[0]??[];if(N.length!==1||!(A&&B))throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:M.Chain.Bitcoin,error:`Input ${f} has no single taproot key-path origin to sign with`}});return{path:B.der.path,xOnlyKey:A}}function Bf(U){if(U.witnessUtxo?.amount!==void 0)return U.witnessUtxo.amount.toString();let f=U.index!==void 0?U.nonWitnessUtxo?.outputs?.[U.index]:void 0;if(f?.amount!==void 0)return f.amount.toString();return}function Zf(U,f){let $=Buffer.from(U,"hex"),_=$[1]!==void 0?$[1]+2:void 0;if(_!==void 0&&$.length===_)return new Uint8Array([...$,f===M.Chain.BitcoinCash?B$:1]);return new Uint8Array($)}function Z$(U,f,$){let _=[];for(let N=0;N<U.inputsLength;N++){let A=U.getInput(N);_.push({address_n:f,amount:A.value.toString(),prev_hash:$.encode(A.txid),prev_index:A.index,script_type:"SPENDADDRESS"})}return _}async function V$(U,f,$,_){let N=[];for(let A=0;A<U.outputsLength;A++){let B=U.getOutput(A),Y=B.scriptPubkey;if(Y?.[0]===106){N.push(await EU(Y,B.value,_));continue}let q=await G$(Y);if(!q&&B.value>0n)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:_,error:"Unable to decode output address from scriptPubkey"}});if(q===$)N.push({address_n:f,amount:B.value.toString(),script_type:"PAYTOADDRESS"});else N.push({address:q,amount:B.value.toString(),script_type:"PAYTOADDRESS"})}return N}async function G$(U){try{let{OutScript:f,Address:$,NETWORKS:_}=await import("@swapkit/utxo-signer"),N=f.decode(U);if(N.type==="pkh"||N.type==="pk")return $(_.zcash).encode(N)}catch{}return}async function W$(U,f){let{ZcashTransaction:$,Script:_}=await import("@swapkit/utxo-signer"),N=$.fromHex(U,{allowUnknownOutputs:!0}),A=f.clone();for(let B=0;B<N.inputsLength;B++){let q=N.getInput(B).script;if(q&&q.length>0){let X=_.decode(q);if(X.length>=2)A.addSignature(B,X[1],X[0])}}return A}function O$(U,f,$,_){let N=[];for(let A=0;A<U.inputsLength;A++){let B=U.getInput(A),Y=f[A];N.push({address_n:$,amount:Y?.value?.toString()||B.value?.toString()||"0",prev_hash:B.txid?_.encode(B.txid):"",prev_index:B.index??0,script_type:"SPENDADDRESS"})}return N}async function w$({addressN:U,chain:f,myAddress:$,network:_,tx:N}){let A=[];for(let B=0;B<N.outputsLength;B++){let Y=N.getOutput(B),q=N.getOutputAddress(B,_),X=Y.script;if(X?.[0]===106){A.push(await EU(X,Y.amount,f));continue}if(!q&&(Y.amount??0n)>0n)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:f,error:"Unable to decode output address"}});let L=q===$||!q?{address_n:U}:{address:q};A.push({...L,amount:Y.amount?.toString()||"0",script_type:"PAYTOADDRESS"})}return A}function D$({inputs:U,outputs:f,...$}){let _=(B)=>B.reduce((Y,{amount:q})=>Y+BigInt(q),0n),N=_(U),A=_(f);return{...$,fee:(N-A).toString(),inputAmounts:U.map(({amount:B})=>B),inputs:U.map(({prev_hash:B,prev_index:Y})=>`${B}:${Y}`),inputTotal:N.toString(),outputs:f.map(({address:B,amount:Y,script_type:q})=>({amount:Y,kind:q==="PAYTOOPRETURN"?"op_return":B?"external":"change"})),outputTotal:A.toString()}}async function ZU(U,f,$,_,N,A,B,Y){let q=[];for(let X=0;X<U.outputsLength;X++){let J=U.getOutput(X),L=U.getOutputAddress(X,f);if(J.script?.[0]===106){q.push(await EU(J.script,J.amount,N));continue}if(!L)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:N,error:"Unable to decode output address from scriptPubkey"}});if(J.amount===void 0)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:N,error:"Output amount is missing"}});let V=N===M.Chain.BitcoinCash,j=V?B(L):L,R=V?Y(j)===Y(_):j===_;q.push(R?{address_n:$,amount:J.amount.toString(),script_type:A.output}:{address:j,amount:J.amount.toString(),script_type:"PAYTOADDRESS"})}return q}function kU(U){return U===M.Chain.Bitcoin||U===M.Chain.Litecoin}function T$(U){return U===M.Chain.BitcoinCash||U===M.Chain.Dash||U===M.Chain.Dogecoin}function _f(U,f){if(U!==M.Chain.Dash)return;let $=new Map;for(let _ of f){if(!_.txHex)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:U,error:`Missing previous transaction hex for ${_.hash}:${_.index}`}});$.set(_.hash,{details:{},hex:_.txHex,txid:_.hash})}return[...$.values()]}async function R$({address:U,chain:f,derivationPath:$}){switch(f){case M.Chain.Arbitrum:case M.Chain.Arc:case M.Chain.Aurora:case M.Chain.Avalanche:case M.Chain.Base:case M.Chain.Berachain:case M.Chain.BinanceSmartChain:case M.Chain.Ethereum:case M.Chain.Gnosis:case M.Chain.Hyperevm:case M.Chain.Monad:case M.Chain.Optimism:case M.Chain.Polygon:case M.Chain.Robinhood:case M.Chain.XLayer:{let{getProvider:_,getEvmToolboxAsync:N}=await import("@swapkit/toolboxes/evm"),{getEVMSigner:A}=await Promise.resolve().then(() => (KU(),gU)),B=await _(f),Y=await A({chain:f,derivationPath:$,provider:B}),q=await Y.getAddress();return{...await N(f,{provider:B,signer:Y}),address:q}}case M.Chain.Cardano:{let{getCardanoToolbox:_}=await import("@swapkit/toolboxes/cardano"),{getCardanoSigner:N}=await Promise.resolve().then(() => (uU(),cU)),A=await import("@trezor/connect-web"),B=await N({connect:A,derivationPath:$}),Y=B.getAddress();return{..._({signer:B}),address:Y}}case M.Chain.Ripple:{let{getRippleToolbox:_}=await import("@swapkit/toolboxes/ripple"),{getRippleSigner:N}=await Promise.resolve().then(() => (rU(),pU)),A=N({derivationPath:$}),B=U??await A.getAddress();return{..._({signer:A}),address:B}}case M.Chain.Solana:{let{getSolanaToolbox:_}=await import("@swapkit/toolboxes/solana"),{getSolanaSigner:N}=await Promise.resolve().then(() => (nU(),dU)),A=N({address:U,derivationPath:$}),B=U??await A.getAddress();return{..._({signer:A}),address:B}}case M.Chain.Stellar:{let{getStellarToolbox:_}=await import("@swapkit/toolboxes/stellar"),{getStellarSigner:N}=await Promise.resolve().then(() => (eU(),tU)),A=N({derivationPath:$}),B=U??await A.getAddress();return{..._({signer:A}),address:B}}case M.Chain.Tron:{let{getTronToolbox:_}=await import("@swapkit/toolboxes/tron"),{getTronSigner:N}=await Promise.resolve().then(() => (Af(),Mf)),A=N({address:U,derivationPath:$}),B=await A.getAddress();return{..._({signer:A}),address:B}}case M.Chain.Zcash:{let{getUtxoToolbox:_}=await import("@swapkit/toolboxes/utxo"),N=f.toLowerCase(),A=M.derivationPathToString($),Y=U??await(async()=>{let Q=(await import("@trezor/connect-web")).default,{success:O,payload:w}=await Q.getAddress({coin:N,path:A});if(!O)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:f,error:w.error||"Unknown error"}});return w.address})(),q=async(Q,O)=>{let I=await(await import("@trezor/connect-web")).default.signTransaction({...Q,coin:N,overwintered:!0});if(!I.success)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...I.payload,chain:f,derivationPath:$,request:D$(Q),signingPath:O}});return I.payload.serializedTx},X=async(Q)=>{let{hex:O}=await import("@scure/base"),w=_U($),I=Q.getGlobal(),y=Z$(Q,w,O),l=await V$(Q,w,Y,f),d={branchId:I.consensusBranchId,expiry:I.expiryHeight,inputs:y,locktime:I.lockTime,outputs:l,version:I.txVersion,versionGroupId:I.versionGroupId},o=await q(d,"pczt");return{serializedTx:o,signedPczt:await W$(o,Q)}},J=async(Q)=>{let{ZcashTransaction:O}=await import("@swapkit/utxo-signer");return O.fromHex(Q,{allowUnknownOutputs:!0})},L=async(Q)=>{let{hex:O}=await import("@scure/base"),{NETWORKS:w,ZcashVersionGroupId:I}=await import("@swapkit/utxo-signer"),y=_U($),l=O$(Q,[],y,O),d=await w$({addressN:y,chain:f,myAddress:Y,network:w.zcash,tx:Q}),o={branchId:Q.consensusBranchId,expiry:0,inputs:l,locktime:0,outputs:d,version:4,versionGroupId:I.SAPLING},MU=await q(o,"transaction");return{serializedTx:MU,signedTx:await J(MU)}},V={getAddress:async()=>Y,signPCZT:async(Q)=>{return(await X(Q)).signedPczt},signTransaction:async(Q)=>{if("toPCZT"in Q){let{serializedTx:O}=await X(Q.toPCZT());return J(O)}if("getGlobal"in Q){let{serializedTx:O}=await X(Q);return J(O)}return(await L(Q)).signedTx}},j=_(M.Chain.Zcash,{signer:V}),R=async(Q)=>{if("toPCZT"in Q){let{serializedTx:w}=await X(Q.toPCZT());return j.broadcastTx(w)}if("getGlobal"in Q){let{serializedTx:w}=await X(Q);return j.broadcastTx(w)}let{serializedTx:O}=await L(Q);return j.broadcastTx(O)},S=async({recipient:Q,feeOptionKey:O,feeRate:w,...I})=>{if(!(Y&&Q))throw new M.SwapKitError({errorKey:"wallet_missing_params",info:{address:Y,recipient:Q,wallet:M.WalletOption.TREZOR}});let y=w||(await j.getFeeRates())[O||M.FeeOption.Fast],{tx:l}=await j.createTransaction({...I,feeRate:y,fetchTxHex:!1,recipient:Q,sender:Y}),{serializedTx:d}=await L(l);return j.broadcastTx(d)};return{...j,address:Y,signAndBroadcastTransaction:R,signPCZT:V.signPCZT,transfer:S}}case M.Chain.Bitcoin:case M.Chain.BitcoinCash:case M.Chain.Dash:case M.Chain.Dogecoin:case M.Chain.Litecoin:{let Wf=function(Z={}){return OU(Z)},{toCashAddress:_,getUtxoToolbox:N,stripPrefix:A}=await import("@swapkit/toolboxes/utxo"),B=f,Y=X$(f,$);if(!Y)throw new M.SwapKitError({errorKey:"wallet_trezor_derivation_path_not_supported",info:{derivationPath:$}});let q=Y,X=Y.utxo===M.UTXOScriptType.P2TR,J={scriptType:Y.utxo},L=f.toLowerCase(),j=U??await(async(Z=$)=>{let z=(await import("@trezor/connect-web")).default,k=M.derivationPathToString(Z),{success:D,payload:E}=await z.getAddress({coin:L,...jU,path:k,showOnTrezor:!1});if(!D)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:f,error:E.error||"Unknown error"}});if(f===M.Chain.BitcoinCash)return A(E.address);return E.address})(),R=N(f,J),S=async(Z,z,k="")=>{await Nf(Z,k,f);let D=(await import("@trezor/connect-web")).default,E=_U($),T=H.getNetworkForChain(f),b=await ZU(Z,T,E,j,f,q,_,A),g=z.map(({hash:F,index:K,value:G})=>({address_n:E,amount:G,prev_hash:F,prev_index:K,script_type:q.input})),W=await D.signTransaction({coin:L,inputs:g,outputs:b,refTxs:_f(f,z)});if(W.success)return W.payload.serializedTx;let C=W.payload;throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:f,code:C?.code??"unknown",error:C?.error??"unknown",payload:C}})},Q=async(Z)=>{let z=(await import("@trezor/connect-web")).default,{hex:k}=await import("@scure/base"),D=_U($),E=H.getNetworkForChain(f),T;async function b(){if(!T){let G=await OU(),h=VU.HDKey.fromExtendedKey(G.xpub,E.bip32).derive(`m/${Number($[3]??0)}/${Number($[4]??0)}`);if(!h.publicKey)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_get_public_key",info:{chain:f,error:"Unable to derive Trezor leaf public key from account xpub"}});T=h.publicKey}return[T,{fingerprint:0,path:D}]}let g=[],W=[];async function C(G,m){if(X){let qU=Q$(m,G);if(!qU){let[Df,{path:SU}]=await b();qU={path:SU,xOnlyKey:Df.slice(1)},Z.updateInput(G,{tapBip32Derivation:[[qU.xOnlyKey,{der:{fingerprint:0,path:SU},hashes:[]}]]})}if(!m.tapInternalKey)Z.updateInput(G,{tapInternalKey:qU.xOnlyKey});return qU.path}let h=J$(m),i=h??await b();if(g[G]=i[0],!h)Z.updateInput(G,{bip32Derivation:[i]});return await bU({chain:B,indexes:[G],publicKey:i[0],tx:Z}),i[1].path}for(let G=0;G<Z.inputsLength;G++){let m=Z.getInput(G),h=Bf(m);if(!m.txid||m.index===void 0||!h)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:f,error:`Input ${G} is missing prevout data required by Trezor`}});let i=await C(G,m);W.push({address_n:i,amount:h,prev_hash:k.encode(m.txid),prev_index:m.index,script_type:q.input,...m.sequence!==void 0?{sequence:m.sequence}:{}})}let F=await ZU(Z,E,D,j,f,q,_,A),K=await z.signTransaction({coin:L,...jU,inputs:W,locktime:Z.lockTime,outputs:F,version:Z.version});if(!K.success){let G=K.payload;throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:f,code:G?.code??"unknown",error:G?.error??"unknown",payload:G}})}return K.payload.signatures.forEach((G,m)=>{if(!G)return;if(X){Z.updateInput(m,{tapKeySig:k.decode(G)});return}let h=g[m];if(!h)return;Z.updateInput(m,{partialSig:[[h,Zf(G,f)]]})}),Z},O=async(Z)=>{let z=(await import("@trezor/connect-web")).default,{hex:k}=await import("@scure/base"),D=_U($),E=H.getNetworkForChain(f),T=[];for(let C=0;C<Z.inputsLength;C++){let F=Z.getInput(C),K=Bf(F);if(!F.txid||F.index===void 0||!K)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:f,error:`Input ${C} is missing prevout data required by Trezor`}});T.push({address_n:D,amount:K,prev_hash:k.encode(F.txid),prev_index:F.index,script_type:q.input,...F.sequence!==void 0?{sequence:F.sequence}:{}})}let b=await ZU(Z,E,D,j,f,q,_,A),g=await z.signTransaction({coin:L,inputs:T,locktime:Z.lockTime,outputs:b,version:Z.version});if(g.success)return g.payload.serializedTx;let W=g.payload;throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:f,code:W?.code??"unknown",error:W?.error??"unknown",payload:W}})},w=async(Z,z,k="")=>{await Nf(Z,k,f);let D=(await import("@trezor/connect-web")).default,E=H.getNetworkForChain(f),T=_U($.slice(0,3)),b=await ZU(Z,E,T,j,f,q,_,A),g=z.map(({hash:C,index:F,value:K,derivationIndex:G,isChange:m})=>{let h=m?1:0;return{address_n:[...T,h,G],amount:K,prev_hash:C,prev_index:F,script_type:q.input}}),W=await D.signTransaction({coin:L,inputs:g,outputs:b,refTxs:_f(f,z)});if(W.success)return W.payload.serializedTx;throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:f,error:W.payload.error}})},I=async({utxos:Z,recipient:z,assetValue:k,memo:D,feeRate:E,feeOptionKey:T})=>{let b=N(f,J),g=E||(await b.getFeeRates())[T||M.FeeOption.Fast],{tx:W,inputs:C}=await b.createTransaction({assetValue:k,feeRate:g,fetchTxHex:f===M.Chain.Dash,memo:D,recipient:z,sender:j}),F=C.map((G)=>{let m=Z.find((h)=>h.hash===G.hash&&h.index===G.index);return{...G,derivationIndex:m?.derivationIndex??0,isChange:m?.isChange??!1,txHex:m?.txHex}}),K=await w(W,F,D);return b.broadcastTx(K)},y=async({recipient:Z,feeOptionKey:z,feeRate:k,memo:D,...E})=>{if(!(j&&Z))throw new M.SwapKitError({errorKey:"wallet_missing_params",info:{address:j,memo:D,recipient:Z,wallet:M.WalletOption.TREZOR}});let T=N(f,J),b=k||(await T.getFeeRates())[z||M.FeeOption.Fast],g=T.createTransaction,{tx:W,inputs:C}=await g({...E,feeRate:b,fetchTxHex:f===M.Chain.Dash,memo:D,recipient:Z,sender:j}),F=await S(W,C,D);return await T.broadcastTx(F)},l=kU(f)?await N(B,{...J,signer:{getAddress:async()=>j,signTransaction:Q}}):R,d=T$(f)?async(Z)=>R.broadcastTx(await O(Z)):l.signAndBroadcastTransaction,o=kU(f)?l.signTransaction:S,MU=kU(f)?l.transfer:y;async function OU({accountIndex:Z}={}){let z=(await import("@trezor/connect-web")).default,k=H.getUTXOAccountPath({accountIndex:Z,chain:B,derivationPath:$}),D=M.derivationPathToString(k),E=`${f}:${D}`,T=LU.get(E);if(T)return T;let b=await z.getPublicKey({coin:L,path:D}),{success:g,payload:W}=b;if(!g)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_get_public_key",info:{chain:f,error:W.error||"Unknown error"}});let C=WU(W.xpub,B),F=Lf(W.xpubSegwit,B),K={accountIndex:H.getUTXOAccountIndexFromPath(k),chainCode:W.chainCode,depth:W.depth,fingerprint:W.fingerprint,path:W.serializedPath,publicKey:W.publicKey,xpub:C,xpubSegwit:F};return LU.set(E,K),K}async function HU({accountIndex:Z,index:z,change:k=!1}){H.assertDerivationIndex("index",z);let D=(await import("@trezor/connect-web")).default,E=H.getUTXOAccountPath({accountIndex:Z,chain:B,derivationPath:$}),T=`${M.derivationPathToString(E)}/${Number(k)}/${z}`,{success:b,payload:g}=await D.getAddress({coin:L,...jU,path:T,showOnTrezor:!1});if(!b)return;let W=g.address;if(f===M.Chain.BitcoinCash)W=(await N(f)).stripPrefix(g.address);let C=await D.getPublicKey({coin:L,...jU,path:T,scriptType:q.input,showOnTrezor:!1}),F=C.success?C.payload.publicKey:"";return{accountIndex:H.getUTXOAccountIndexFromPath(E),address:W,change:k,index:z,path:T,pubkey:F}}async function Of({accountIndex:Z,count:z,startIndex:k=0,change:D=!1}){H.assertDerivationIndex("count",z),H.assertDerivationIndex("startIndex",k);let E=(await import("@trezor/connect-web")).default,T=H.getUTXOAccountPath({accountIndex:Z,chain:B,derivationPath:$}),b=M.derivationPathToString(T),g=Array.from({length:z},(K,G)=>({coin:L,path:`${b}/${Number(D)}/${k+G}`,showOnTrezor:!1})),{success:W,payload:C}=await E.getAddress({...jU,bundle:g});if(!W||!Array.isArray(C))return[];return await Promise.all(C.map(async(K,G)=>{let m=K.address;if(f===M.Chain.BitcoinCash)m=(await N(f)).stripPrefix(K.address);return{accountIndex:H.getUTXOAccountIndexFromPath(T),address:m,change:D,index:k+G,path:`${b}/${Number(D)}/${k+G}`,pubkey:""}}))}let wf=H.createHDWalletHelpers({chain:f,deriveAddress:HU,getBalance:l.getBalance,getUtxos:(Z)=>H.getUtxoApi(f).getUtxos({address:Z,fetchTxHex:!0})});return{...l,...wf,address:j,deriveAddressAtIndex:HU,deriveAddresses:Of,getExtendedPublicKey:Wf,getExtendedPublicKeyInfo:OU,signAndBroadcastTransaction:d,signTransaction:o,signTransactionWithMultipleInputs:w,transfer:MU,transferFromMultipleAddresses:I}}default:throw new M.SwapKitError({errorKey:"wallet_chain_not_supported",info:{chain:f,wallet:M.WalletOption.TREZOR}})}}async function Vf(U,f,{accountIndex:$}={}){if(![M.Chain.BitcoinCash,M.Chain.Bitcoin,M.Chain.Dash,M.Chain.Dogecoin,M.Chain.Litecoin,M.Chain.Zcash].includes(U))throw new M.SwapKitError({errorKey:"wallet_chain_not_supported",info:{chain:U,wallet:M.WalletOption.TREZOR}});let{TrezorConnect:_}=await q$(),N=U,A=f??M.NetworkDerivationPath[U],B=U.toLowerCase(),Y=H.getUTXOAccountPath({accountIndex:$,chain:N,derivationPath:A}),q=M.derivationPathToString(Y),X=`${U}:${q}`,J=LU.get(X);if(J)return J;let{success:L,payload:V}=await _.getPublicKey({coin:B,path:q,showOnTrezor:!0});if(!L)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_get_public_key",info:{chain:U,error:V.error||"Unknown error"}});let j={accountIndex:H.getUTXOAccountIndexFromPath(Y),chainCode:V.chainCode,depth:V.depth,fingerprint:V.fingerprint,path:V.serializedPath,publicKey:V.publicKey,xpub:WU(V.xpub,N),xpubSegwit:Lf(V.xpubSegwit,N)};return LU.set(X,j),j}var Gf=GU.createWallet({connect:({addChain:U,supportedChains:f,walletType:$})=>async function(N,A,{address:B}={}){let[Y]=M.filterSupportedChains({chains:N,supportedChains:f,walletType:$});if(!Y)throw new M.SwapKitError({errorKey:"wallet_chain_not_supported",info:{chain:Y,wallet:M.WalletOption.TREZOR}});let q=(await import("@trezor/connect-web")).default,X=M.SKConfig.get("integrations").trezor,{connectSrc:J,coreMode:L,debug:V,interactionTimeout:j,lazyLoad:R,pendingTransportEvent:S,popup:Q,transportReconnect:O,transports:w,...I}=X??{},y={...I,appName:YU(X?.appName,JU.appName),appUrl:YU(X?.appUrl,Jf()),email:YU(X?.email,JU.email)},l=typeof globalThis.location<"u"&&["localhost","127.0.0.1"].includes(globalThis.location.hostname),d=Xf(L)??Yf,o=jf(w)??qf;if($U)await $U;if(l)await q.dispose();await q.init({connectSrc:J,coreMode:d,debug:V,interactionTimeout:j,lazyLoad:R??!1,manifest:y,pendingTransportEvent:S,popup:Q??!0,transportReconnect:O,transports:o});let MU=await R$({address:B,chain:Y,derivationPath:A});return U({...MU,chain:Y,disconnect:Y$,walletType:$}),!0},getExtendedPublicKey:Vf,name:"connectTrezor",signingSupport:{[M.Chain.Arbitrum]:{direct:!0,typedData:!0},[M.Chain.Arc]:{direct:!0,typedData:!0},[M.Chain.Aurora]:{direct:!0,typedData:!0},[M.Chain.Avalanche]:{direct:!0,typedData:!0},[M.Chain.Base]:{direct:!0,typedData:!0},[M.Chain.Berachain]:{direct:!0,typedData:!0},[M.Chain.BinanceSmartChain]:{direct:!0,typedData:!0},[M.Chain.Bitcoin]:{direct:!0},[M.Chain.BitcoinCash]:{direct:!0},[M.Chain.Cardano]:{direct:!0},[M.Chain.Dash]:{direct:!0},[M.Chain.Ethereum]:{direct:!0,typedData:!0},[M.Chain.Gnosis]:{direct:!0,typedData:!0},[M.Chain.Dogecoin]:{direct:!0},[M.Chain.Hyperevm]:{direct:!0,typedData:!0},[M.Chain.Litecoin]:{direct:!0},[M.Chain.Monad]:{direct:!0,typedData:!0},[M.Chain.Optimism]:{direct:!0,typedData:!0},[M.Chain.Polygon]:{direct:!0,typedData:!0},[M.Chain.Ripple]:{direct:!0},[M.Chain.Robinhood]:{direct:!0,typedData:!0},[M.Chain.Solana]:{direct:!0},[M.Chain.Stellar]:{direct:!0},[M.Chain.Tron]:{direct:!0},[M.Chain.XLayer]:{direct:!0,typedData:!0},[M.Chain.Zcash]:{direct:!0}},supportedChains:[M.Chain.Arbitrum,M.Chain.Arc,M.Chain.Aurora,M.Chain.Avalanche,M.Chain.Base,M.Chain.Berachain,M.Chain.BinanceSmartChain,M.Chain.Bitcoin,M.Chain.BitcoinCash,M.Chain.Cardano,M.Chain.Dash,M.Chain.Dogecoin,M.Chain.Ethereum,M.Chain.Gnosis,M.Chain.Hyperevm,M.Chain.Litecoin,M.Chain.Monad,M.Chain.Optimism,M.Chain.Polygon,M.Chain.Ripple,M.Chain.Robinhood,M.Chain.Solana,M.Chain.Stellar,M.Chain.Tron,M.Chain.XLayer,M.Chain.Zcash],walletType:M.WalletOption.TREZOR}),m$=GU.getWalletSupportedChains(Gf);
|
|
1
|
+
var mf=Object.create;var{getPrototypeOf:zf,defineProperty:qU,getOwnPropertyNames:CU,getOwnPropertyDescriptor:Sf}=Object,IU=Object.prototype.hasOwnProperty;function bU(U){return this[U]}var Ff,Cf,b$=(U,f,$)=>{var B=U!=null&&typeof U==="object";if(B){var _=f?Ff??=new WeakMap:Cf??=new WeakMap,N=_.get(U);if(N)return N}$=U!=null?mf(zf(U)):{};let A=f||!U||!U.__esModule?qU($,"default",{value:U,enumerable:!0}):$;for(let Y of CU(U))if(!IU.call(A,Y))qU(A,Y,{get:bU.bind(U,Y),enumerable:!0});if(B)_.set(U,A);return A},If=(U)=>{var f=(FU??=new WeakMap).get(U),$;if(f)return f;if(f=qU({},"__esModule",{value:!0}),U&&typeof U==="object"||typeof U==="function"){for(var B of CU(U))if(!IU.call(f,B))qU(f,B,{get:bU.bind(U,B),enumerable:!($=Sf(U,B))||$.enumerable})}return FU.set(U,f),f},FU,K$=(U,f)=>()=>(f||U((f={exports:{}}).exports,f),f.exports);var bf=(U)=>U;function Kf(U,f){this[U]=bf.bind(null,f)}var a=(U,f)=>{for(var $ in f)qU(U,$,{get:f[$],enumerable:!0,configurable:!0,set:Kf.bind(f,$)})};var t=(U,f)=>()=>(U&&(f=U(U=0)),f);var gU={};a(gU,{getEVMSigner:()=>gf});async function gf({chain:U,derivationPath:f,provider:$}){let{AbstractSigner:B}=await import("ethers");class _ extends B{address;chain;derivationPath;provider;constructor({chain:N,derivationPath:A,provider:Y}){super(Y);this.address="",this.chain=N,this.derivationPath=A,this.provider=Y}getAddress=async()=>{if(!this.address){let A=await(await import("@trezor/connect-web")).default.ethereumGetAddress({path:y.derivationPathToString(this.derivationPath),showOnTrezor:!0});if(!A.success)throw new y.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{...A,chain:this.chain,derivationPath:this.derivationPath}});this.address=A.payload.address}return this.address};signMessage=async(N)=>{let Y=await(await import("@trezor/connect-web")).default.ethereumSignMessage({message:N,path:y.derivationPathToString(this.derivationPath)});if(!Y.success)throw new y.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...Y,chain:this.chain,derivationPath:this.derivationPath,message:N}});return Y.payload.signature};signTypedData=async(N,A,Y,X)=>{let q=(await import("@trezor/connect-web")).default,{buildEIP712DomainType:J}=await import("@swapkit/toolboxes/evm"),{TypedDataEncoder:L}=await import("ethers"),{EIP712Domain:V,...j}=A,w=X??L.from(j).primaryType,z=J(N),Q={domain:N,message:Y,primaryType:w,types:{EIP712Domain:z,...j}},O=await q.ethereumSignTypedData({data:Q,metamask_v4_compat:!0,path:y.derivationPathToString(this.derivationPath)});if(!O.success)throw new y.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:this.chain,error:O.payload.error}});return O.payload.signature.startsWith("0x")?O.payload.signature:`0x${O.payload.signature}`};signTransaction=async({to:N,gasLimit:A,value:Y,data:X,nonce:q,maxFeePerGas:J,maxPriorityFeePerGas:L,gasPrice:V})=>{if(!N)throw new y.SwapKitError({errorKey:"wallet_missing_params",info:{to:N}});if(!A)throw new y.SwapKitError({errorKey:"wallet_missing_params",info:{gasLimit:A}});let j=J!=null||L!=null;if(j&&!J)throw new y.SwapKitError({errorKey:"wallet_missing_params",info:{maxFeePerGas:J}});if(!(j||V))throw new y.SwapKitError({errorKey:"wallet_missing_params",info:{gasPrice:V}});let w=(await import("@trezor/connect-web")).default,{toHexString:z}=await import("@swapkit/toolboxes/evm"),Q=j?{maxFeePerGas:z(BigInt(J?.toString()||0)),maxPriorityFeePerGas:z(BigInt(L?.toString()||0))}:V&&{gasPrice:z(BigInt(V?.toString()||0))}||{gasPrice:"0x0"},O=z(BigInt(q||await this.provider.getTransactionCount(await this.getAddress(),"pending"))),D={chainId:Number.parseInt(y.ChainToChainId[this.chain],10),data:X?.toString()||"0x",gasLimit:z(BigInt(A?.toString()||0)),nonce:O,to:N.toString(),value:z(BigInt(Y?.toString()||0)),...Q},{success:P,payload:I}=await w.ethereumSignTransaction({path:y.derivationPathToString(this.derivationPath),transaction:D});if(!P)throw new y.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...I,chain:this.chain,derivationPath:this.derivationPath}});let v=I.serializedTx?I.serializedTx.startsWith("0x")?I.serializedTx:`0x${I.serializedTx}`:void 0;if(!v)throw new y.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:this.chain,derivationPath:this.derivationPath}});return v};connect=(N)=>{if(!N)throw new y.SwapKitError({errorKey:"wallet_provider_not_found",info:{chain:this.chain,derivationPath:this.derivationPath,wallet:y.WalletOption.TREZOR}});return new _({chain:this.chain,derivationPath:this.derivationPath,provider:N})}}return new _({chain:U,derivationPath:f,provider:$})}var y;var yU=t(()=>{y=require("@swapkit/helpers")});function NU(U,f,$){let _=typeof U==="object"&&U!==null&&"toFixed"in U||Number.isSafeInteger(U)?String(U.toFixed()):"";if(!/^\d+$/.test(_))throw $(`Invalid ${f} in Cardano transaction`);return _}function yf(U,f){if(!(U instanceof Map))throw f("Invalid Cardano output value");return[...U].map(([$,B])=>({policyId:$,tokens:[...B].map(([_,N])=>({amount:NU(N,"token amount",f),assetName:_}))}))}function vf(U,f,$){let B,_,N;if(Array.isArray(U)){if(U.length!==2)throw $(`${f} cannot sign Cardano outputs with a datum`);[B,_]=U,N="legacy"}else if(U instanceof Map){if(U.has(2))throw $(`${f} cannot sign Cardano outputs with a datum`);if(U.has(3))throw $(`${f} cannot sign Cardano outputs with a reference script`);if([...U.keys()].some((X)=>X!==0&&X!==1))throw $("Unsupported field in Cardano output");B=U.get(0),_=U.get(1),N="babbage"}else throw $("Invalid Cardano output");if(!(B instanceof Uint8Array))throw $("Invalid Cardano output address");if(Array.isArray(_)&&_.length!==2)throw $("Invalid Cardano output value");let[A,Y]=Array.isArray(_)?_:[_];return{address:B,amount:NU(A,"output amount",$),format:N,tokenGroups:Y===void 0?void 0:yf(Y,$)}}function vU(U,f,$){let B=Object.values(UU),_=[...U.keys()].filter((j)=>!B.includes(j));if(_.length>0)throw $(`${f} cannot sign Cardano transactions with body fields ${_.join(", ")}`);let N=U.get(UU.INPUTS),A=typeof N==="object"&&N!==null&&"tag"in N&&N.tag===258&&"value"in N,Y=A?N.value:N;if(!Array.isArray(Y))throw $("Invalid Cardano inputs");let X=Y.map((j)=>{if(!Array.isArray(j)||j.length!==2)throw $("Invalid Cardano input");let[w,z]=j;if(!(w instanceof Uint8Array))throw $("Invalid Cardano input");return{index:Number(NU(z,"input index",$)),txHash:w}}),q=U.get(UU.OUTPUTS);if(!Array.isArray(q))throw $("Invalid Cardano outputs");let J=U.get(UU.AUXILIARY_DATA_HASH);if(J!==void 0&&!(J instanceof Uint8Array))throw $("Invalid Cardano auxiliary data hash");let L=U.get(UU.TTL),V=U.get(UU.VALIDITY_INTERVAL_START);return{auxiliaryDataHash:J,fee:NU(U.get(UU.FEE),"fee",$),inputs:X,outputs:q.map((j)=>vf(j,f,$)),tagCborSets:A,ttl:L===void 0?void 0:NU(L,"ttl",$),validityIntervalStart:V===void 0?void 0:NU(V,"validity interval start",$)}}var UU;var PU=t(()=>{UU={AUXILIARY_DATA_HASH:7,FEE:2,INPUTS:0,OUTPUTS:1,TTL:3,VALIDITY_INTERVAL_START:8}});var cU={};a(cU,{toTrezorCardanoTransaction:()=>lU,getCardanoSigner:()=>lf,addTrezorWitnesses:()=>xU});function hU({CARDANO:U,PROTO:f}){return{derivationType:f.CardanoDerivationType.ICARUS,mainnet:{networkId:U.NETWORK_IDS.mainnet,protocolMagic:U.PROTOCOL_MAGICS.mainnet}}}function Pf(U){return new u.SwapKitError({errorKey:"wallet_trezor_method_not_supported",info:{chain:u.Chain.Cardano,reason:U}})}function RU(U){return new u.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:u.Chain.Cardano,error:U}})}async function hf({address:U,amount:f,format:$,tokenGroups:B},_,N){let A=await d.getCardanoAddressFromBytes(U),Y=A===_.address?{addressParameters:{addressType:N.CardanoAddressType.BASE,path:_.path,stakingPath:_.stakingPath}}:{address:A},X=B?.map(({policyId:q,tokens:J})=>({policyId:fU.hex.encode(q),tokenAmounts:J.map(({amount:L,assetName:V})=>({amount:L,assetNameBytes:fU.hex.encode(V)}))}));return{...Y,amount:f,format:$==="legacy"?N.CardanoTxOutputSerializationFormat.ARRAY_LEGACY:N.CardanoTxOutputSerializationFormat.MAP_BABBAGE,...X===void 0?{}:{tokenBundle:X}}}async function lU(U,f,$){let{body:B}=await d.decodeCardanoTransaction(U),{derivationType:_,mainnet:N}=hU($),{PROTO:A}=$,{auxiliaryDataHash:Y,fee:X,inputs:q,outputs:J,tagCborSets:L,ttl:V,validityIntervalStart:j}=vU(B,"Trezor",Pf);return{inputs:q.map(({index:w,txHash:z})=>({path:f.path,prev_hash:fU.hex.encode(z),prev_index:w})),tagCborSets:L,...N,derivationType:_,fee:X,outputs:await Promise.all(J.map((w)=>hf(w,f,A))),signingMode:A.CardanoTxSigningMode.ORDINARY_TRANSACTION,...Y?{auxiliaryData:{hash:fU.hex.encode(Y)}}:{},...V===void 0?{}:{ttl:V},...j===void 0?{}:{validityIntervalStart:j}}}async function xU(U,{hash:f,witnesses:$},B,{PROTO:_}){let{bodyHash:N}=await d.decodeCardanoTransaction(U);if(f.toLowerCase()!==N)throw RU("Trezor signed a different transaction body");let A=$.map(({pubKey:Y,signature:X,type:q})=>{if(q!==_.CardanoTxWitnessType.SHELLEY_WITNESS||Y.toLowerCase()!==B)throw RU("Trezor returned a witness for an unexpected key");return{publicKey:fU.hex.decode(Y),signature:fU.hex.decode(X)}});return d.addCardanoVkeyWitnesses(U,A)}async function lf({connect:U,derivationPath:f}){let[$,B,_,N,A]=f;if(f.length!==5||N!==0||A===void 0)throw new u.SwapKitError({errorKey:"wallet_trezor_derivation_path_not_supported",info:{chain:u.Chain.Cardano,derivationPath:f}});let Y=u.derivationPathToString(f),X=u.derivationPathToString([$,B,_,2,0]),{derivationType:q,mainnet:J}=hU(U),L=U.default,V=await L.cardanoGetPublicKey({bundle:[Y,X].map((D)=>({derivationType:q,path:D}))});if(!V.success)throw new u.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:u.Chain.Cardano,derivationPath:f,error:V.payload.error}});let[j,w]=V.payload.map(({node:D})=>Buffer.from(D.public_key,"hex")),z=await d.getCardanoPublicKeyHash(j),Q=await d.getCardanoAddressFromBytes(Buffer.concat([Buffer.from([J.networkId]),z,await d.getCardanoPublicKeyHash(w)]));async function O(D){let P=await lU(D,{address:Q,path:Y,stakingPath:X},U),I=await L.cardanoSignTransaction(P);if(!I.success)throw RU(I.payload.error);return xU(D,I.payload,j.toString("hex"),U)}return{getAddress:()=>Q,publicKey:j,publicKeyHash:z,signTransaction:O}}var fU,u,d;var uU=t(()=>{PU();fU=require("@scure/base"),u=require("@swapkit/helpers"),d=require("@swapkit/toolboxes/cardano")});var sU={};a(sU,{toTrezorHyperCoreTypedData:()=>dU,getHyperCoreSigner:()=>xf});function pU(U){return new p.SwapKitError({errorKey:"wallet_trezor_method_not_supported",info:{chain:p.Chain.Hype,reason:U}})}async function dU(U,f,$){let{TypedDataEncoder:B}=await import("ethers"),{EIP712Domain:_,...N}=f;try{let A=B.getPayload(U,N,$);return{domain:U,message:$,primaryType:A.primaryType,types:{EIP712Domain:A.types.EIP712Domain,...N}}}catch(A){throw pU(`Invalid HyperCore typed data: ${A.message}`)}}function xf({address:U,derivationPath:f}){let $=p.derivationPathToString(f),B=U??"";return{getAddress:async()=>{if(B)return B;let N=await(await import("@trezor/connect-web")).default.ethereumGetAddress({path:$,showOnTrezor:!0});if(!N.success)throw new p.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:p.Chain.Hype,derivationPath:f,error:N.payload.error}});return B=N.payload.address,B},signTransaction:()=>Promise.reject(pU("HyperCore actions are signed with signTypedData")),signTypedData:async(_,N,A)=>{let Y=await dU(_,N,A),q=await(await import("@trezor/connect-web")).default.ethereumSignTypedData({data:Y,metamask_v4_compat:!0,path:$});if(!q.success)throw new p.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:p.Chain.Hype,error:q.payload.error}});if(q.payload.address.toLowerCase()!==B.toLowerCase())throw new p.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:p.Chain.Hype,error:"Trezor signed with a different address",signer:q.payload.address}});return q.payload.signature.startsWith("0x")?q.payload.signature:`0x${q.payload.signature}`}}}var p;var rU=t(()=>{p=require("@swapkit/helpers")});var iU={};a(iU,{toTrezorRippleTransaction:()=>nU,getRippleSigner:()=>uf});function o(U){return new s.SwapKitError({errorKey:"wallet_trezor_method_not_supported",info:{chain:s.Chain.Ripple,reason:U}})}function nU(U){let f=U;if(f.TransactionType!=="Payment")throw o(`Trezor only signs XRP payments, got ${String(f.TransactionType)}`);let $=Object.keys(f).filter((J)=>f[J]!==void 0&&f[J]!==null&&!cf.has(J));if($.length>0)throw o(`Trezor cannot sign XRP payments with ${$.join(", ")}`);let{Amount:B,Destination:_,DestinationTag:N,Fee:A,Flags:Y,LastLedgerSequence:X,Sequence:q}=f;if(typeof B!=="string"||!/^\d+$/.test(B))throw o("Trezor only signs native XRP amounts");if(typeof _!=="string")throw o("Missing destination");if(!AU.isValidClassicAddress(_))throw o("Destination must be a classic XRP address");if(typeof A!=="string"||typeof q!=="number")throw o("Transaction is not autofilled");if(Y!==void 0&&typeof Y!=="number")throw o("Flags must be numeric");if(((Y??0)&AU.GlobalFlags.tfInnerBatchTxn)!==0)throw o("Trezor cannot sign Batch inner XRP transactions");return{fee:A,flags:Y,maxLedgerVersion:X,payment:{amount:B,destination:_,destinationTag:N},sequence:q}}function uf({derivationPath:U}){let f=s.derivationPathToString(U),$="";async function B(){if($)return $;let A=await(await import("@trezor/connect-web")).default.rippleGetAddress({path:f,showOnTrezor:!0});if(!A.success)throw new s.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:s.Chain.Ripple,derivationPath:U,error:A.payload.error}});return $=A.payload.address,$}async function _(N){let A=nU(N);if(N.Account!==await B())throw o("Transaction account does not match the Trezor address");let X=await(await import("@trezor/connect-web")).default.rippleSignTransaction({path:f,transaction:A});if(!X.success)throw new s.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:s.Chain.Ripple,error:X.payload.error}});let q=X.payload.serializedTx.toUpperCase();return{hash:AU.hashes.hashSignedTx(q),tx_blob:q}}return{getAddress:B,signTransaction:_}}var s,AU,cf;var oU=t(()=>{s=require("@swapkit/helpers"),AU=require("xrpl"),cf=new Set(["Account","Amount","Destination","DestinationTag","Fee","Flags","LastLedgerSequence","Sequence","SigningPubKey","TransactionType"])});var tU={};a(tU,{getSolanaSigner:()=>nf});function pf(U){return new h.SwapKitError({errorKey:"wallet_trezor_method_not_supported",info:{chain:h.Chain.Solana,reason:U}})}function df(U){if("version"in U){let{header:f,staticAccountKeys:$}=U.message;return{message:U.message.serialize(),signerKeys:$.slice(0,f.numRequiredSignatures)}}return{message:U.serializeMessage(),signerKeys:U.signatures.map(({publicKey:f})=>f)}}function sf(U,f){let{message:$,signerKeys:B}=df(U),_=B.find((N)=>N.toBase58()===f);if(!_)throw pf("Trezor account is not a required signer of this transaction");return{message:$,signerKey:_}}function rf(U,{message:f,signature:$,signerKey:B}){if($.length!==64)throw new h.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:h.Chain.Solana,error:`Invalid signature length: ${$.length}`}});if(!aU.ed25519.verify($,f,B.toBytes()))throw new h.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:h.Chain.Solana,error:"Signature does not match the Trezor account"}});return U.addSignature(B,Buffer.from($)),U}function nf({address:U,derivationPath:f}){let[$,B]=f;if($!==44||B!==501||f.length>4)throw new h.SwapKitError({errorKey:"wallet_trezor_derivation_path_not_supported",info:{chain:h.Chain.Solana,derivationPath:f}});let _=h.derivationPathToString(f,{allHardened:!0}),N=U?new QU.PublicKey(U):null,A=null;async function Y(q){if(A)return A.toBase58();let L=await(await import("@trezor/connect-web")).default.solanaGetAddress({path:_,showOnTrezor:q});if(!L.success)throw new h.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:h.Chain.Solana,derivationPath:f,error:L.payload.error}});let V=new QU.PublicKey(L.payload.address);if(N&&!V.equals(N))throw new h.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:h.Chain.Solana,derivationPath:f,error:"Trezor account does not match the restored address"}});return A=V,L.payload.address}async function X(q){let{message:J,signerKey:L}=sf(q,await Y(!1)),j=await(await import("@trezor/connect-web")).default.solanaSignTransaction({path:_,serializedTx:TU.hex.encode(J)});if(!j.success)throw new h.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:h.Chain.Solana,error:j.payload.error}});let w=TU.hex.decode(j.payload.signature.replace(/^0x/,""));return rf(q,{message:J,signature:w,signerKey:L})}return{connect:async()=>({publicKey:new QU.PublicKey(await Y(!0))}),disconnect:()=>Promise.resolve(),getAddress:()=>Y(!0),get publicKey(){return A??N},signTransaction:X}}var aU,TU,QU,h;var eU=t(()=>{aU=require("@noble/curves/ed25519.js"),TU=require("@scure/base"),QU=require("@solana/web3.js"),h=require("@swapkit/helpers")});var Mf={};a(Mf,{toTrezorStellarTransaction:()=>$f,getStellarSigner:()=>$$});function r(U){return new x.SwapKitError({errorKey:"wallet_trezor_method_not_supported",info:{chain:x.Chain.Stellar,reason:U}})}function HU(U){let f=/^(\d+)(?:\.(\d{1,7}))?$/.exec(U);if(!f)throw r(`Invalid Stellar amount: ${U}`);let[,$="0",B=""]=f;return BigInt(`${$}${B.padEnd(of,"0")}`).toString()}function Uf(U){if(!/^\d+$/.test(U)||BigInt(U)>af)throw r(`Unsupported Stellar time bound: ${U}`);return Number(U)}function ff(U){let f=tf[U.getAssetType()];if(!f||!("getCode"in U))throw r("Trezor does not support liquidity pool assets");return f==="NATIVE"?{type:f}:{code:U.getCode(),issuer:U.getIssuer(),type:f}}function ef({source:U,...f}){let $=U?{source:U}:{};switch(f.type){case"payment":return{...$,amount:HU(f.amount),asset:ff(f.asset),destination:f.destination,type:"payment"};case"createAccount":return{...$,destination:f.destination,startingBalance:HU(f.startingBalance),type:"createAccount"};case"changeTrust":return{...$,limit:HU(f.limit),line:ff(f.line),type:"changeTrust"};default:throw r(`Unsupported Stellar operation: ${f.type}`)}}function U$(U){if(typeof U==="string")return U;try{return new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}).decode(U??void 0)}catch{throw r("Trezor only signs UTF-8 text memos")}}function f$({type:U,value:f}){switch(U){case"none":return;case"text":return{text:U$(f),type:wU.text};case"id":return{id:String(f),type:wU.id};case"hash":case"return":return{hash:Buffer.from(f??"").toString("hex"),type:wU[U]};default:throw r(`Unsupported Stellar memo type: ${U}`)}}function $f(U){if("innerTransaction"in U)throw r("Trezor cannot sign fee bump transactions");if(!U.timeBounds)throw r("Trezor requires transaction time bounds");let{extraSigners:f,ledgerBounds:$,minAccountSequence:B,minAccountSequenceAge:_,minAccountSequenceLedgerGap:N}=U;if([$,B,_,N].some((Y)=>Y!==void 0)||f?.length)throw r("Trezor cannot sign Stellar transactions with extra preconditions");return{networkPassphrase:U.networkPassphrase,transaction:{fee:Number(U.fee),memo:f$(U.memo),operations:U.operations.map(ef),sequence:U.sequence,source:U.source,timebounds:{maxTime:Uf(U.timeBounds.maxTime),minTime:Uf(U.timeBounds.minTime)}}}}function $$({derivationPath:U}){if(U[3]||U[4])throw new x.SwapKitError({errorKey:"wallet_trezor_derivation_path_not_supported",info:{chain:x.Chain.Stellar,derivationPath:U,reason:"Stellar only uses m/44'/148'/x'"}});let f=x.derivationPathToString(U.slice(0,3)),$="";async function B(){if($)return $;let A=await(await import("@trezor/connect-web")).default.stellarGetAddress({path:f,showOnTrezor:!0});if(!A.success)throw new x.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:x.Chain.Stellar,derivationPath:U,error:A.payload.error}});return $=A.payload.address,$}async function _(N){let A=$f(N);if(A.transaction.source!==await B())throw r("Transaction source does not match the Trezor address");let X=await(await import("@trezor/connect-web")).default.stellarSignTransaction({path:f,...A});if(!X.success)throw new x.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:x.Chain.Stellar,error:X.payload.error}});try{N.addSignature($,Buffer.from(X.payload.signature,"hex").toString("base64"))}catch(q){throw new x.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:x.Chain.Stellar,error:q}})}return N}return{getAddress:B,signTransaction:_}}var x,of=7,af=4294967295n,tf,wU;var Nf=t(()=>{x=require("@swapkit/helpers"),tf={credit_alphanum4:"ALPHANUM4",credit_alphanum12:"ALPHANUM12",native:"NATIVE"},wU={hash:3,id:2,return:4,text:1}});var Yf={};a(Yf,{toTrezorTronContract:()=>_f,getTronSigner:()=>X$});function BU(U){return new n.SwapKitError({errorKey:"wallet_trezor_method_not_supported",info:{chain:n.Chain.Tron,reason:U}})}function kU(U,f,$){let B=Object.keys(U).filter((_)=>!f.has(_)&&!_$.includes(U[_]));if(B.length>0)throw BU(`Trezor cannot sign Tron ${$} with ${B.join(", ")}`)}function Af(U,f){let $=U[f];if(typeof $!=="string"||!$)throw BU(`Missing ${f} in Tron contract`);return $}function Y$(U){let{amount:f}=U;if(!(typeof f==="number"&&Number.isSafeInteger(f)&&f>0||typeof f==="string"&&/^[1-9]\d*$/.test(f)))throw BU("Invalid amount in Tron contract");return String(f)}function _f(U){let[f,...$]=U.raw_data.contract;if(!f||$.length>0)throw BU("Trezor signs Tron transactions with exactly one contract");let B=f.parameter.value,_=B$[f.type];if(!_)throw BU(`Unsupported Tron contract type: ${f.type}`);kU(U.raw_data,N$,"transactions"),kU(f,A$,"contracts"),kU(B,_,f.type);let N=(Y)=>{let X=Af(B,Y);if(U.visible!==!1)return Bf.tronAddressToHex(X);if(M$.test(X))return X.toLowerCase();throw BU(`Invalid hex ${Y} in Tron contract`)},A=N("owner_address");if(f.type==="TransferContract")return{parameter:{value:{amount:Y$(B),owner_address:A,to_address:N("to_address")}},type:"TransferContract"};return{parameter:{value:{contract_address:N("contract_address"),data:Af(B,"data"),owner_address:A}},type:"TriggerSmartContract"}}function X$({address:U,derivationPath:f}){let $=n.derivationPathToString(f),B=U??"";return{getAddress:async()=>{if(B)return B;let N=await(await import("@trezor/connect-web")).default.tronGetAddress({path:$,showOnTrezor:!0});if(!N.success)throw new n.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:n.Chain.Tron,derivationPath:f,error:N.payload.error}});return B=N.payload.address,B},signTransaction:async(_)=>{let N=_f(_),A=(await import("@trezor/connect-web")).default,{data:Y,expiration:X,fee_limit:q,ref_block_bytes:J,ref_block_hash:L,timestamp:V}=_.raw_data,j=await A.tronSignTransaction({contract:[N],data:Y,expiration:X,fee_limit:q,path:$,ref_block_bytes:J,ref_block_hash:L,timestamp:V});if(!j.success)throw new n.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:n.Chain.Tron,error:j.payload.error}});return{..._,signature:[j.payload.signature.replace(/^0x/,"")]}}}}var n,Bf,M$,N$,A$,B$,_$;var Xf=t(()=>{n=require("@swapkit/helpers"),Bf=require("@swapkit/toolboxes/tron"),M$=/^41[0-9a-f]{40}$/i,N$=new Set(["contract","data","expiration","fee_limit","ref_block_bytes","ref_block_hash","timestamp"]),A$=new Set(["parameter","type"]),B$={TransferContract:new Set(["amount","owner_address","to_address"]),TriggerSmartContract:new Set(["contract_address","data","owner_address"])},_$=[void 0,null,0,"",!1]});var I$={};a(I$,{trezorWallet:()=>Tf,normalizeTrezorSignature:()=>Df,normalizeTrezorExtendedPublicKey:()=>WU,getTrezorExtendedPublicKey:()=>Rf,TREZOR_SUPPORTED_CHAINS:()=>C$});module.exports=If(I$);var $U=require("@scure/base"),VU=require("@scure/bip32"),M=require("@swapkit/helpers"),k=require("@swapkit/toolboxes/utxo"),GU=require("@swapkit/wallet-core");async function KU({chain:U,indexes:f,publicKey:$,tx:B}){let{getMissingSpendingMetadata:_,getNetworkForChain:N}=await import("@swapkit/toolboxes/utxo");for(let{index:A,...Y}of _({chain:U,indexes:f,network:N(U),publicKey:$,tx:B}))B.updateInput(A,Y)}var q$=new Set(["auto","iframe","popup","suite-desktop","suite-web"]),j$=new Set(["BridgeTransport","WebUsbTransport","NodeUsbTransport"]),Lf="auto",JU={appName:"SwapKit",appUrl:"https://swapkit.dev",email:"support@swapkit.dev"},Qf=["WebUsbTransport"],jU={keepSession:!0},J$=65,LU=new Map,MU,L$=[M.Chain.Bitcoin,M.Chain.BitcoinCash,M.Chain.Dash,M.Chain.Dogecoin,M.Chain.Litecoin].map((U)=>k.getNetworkForChain(U).bip32);async function Q$(){LU.clear();let U=(async()=>{try{await(await import("@trezor/connect-web")).default.dispose()}catch{}})();if(MU=U,await U,MU===U)MU=void 0}function Zf(U){return typeof U==="string"&&q$.has(U)?U:void 0}function Vf(U){if(!Array.isArray(U))return;let f=U.filter(($)=>typeof $==="string"&&j$.has($));return f.length>0?f:void 0}function YU(U,f){return typeof U==="string"&&U.trim()?U:f}function Gf(){return typeof globalThis.location<"u"&&globalThis.location.origin?globalThis.location.origin:JU.appUrl}async function Z$(){let U=(await import("@trezor/connect-web")).default,f=M.SKConfig.get("integrations").trezor,{connectSrc:$,coreMode:B,debug:_,interactionTimeout:N,lazyLoad:A,pendingTransportEvent:Y,popup:X,transportReconnect:q,transports:J,...L}=f??{},V={...L,appName:YU(f?.appName,JU.appName),appUrl:YU(f?.appUrl,Gf()),email:YU(f?.email,JU.email)},j=typeof globalThis.location<"u"&&["localhost","127.0.0.1"].includes(globalThis.location.hostname),w=Zf(B)??Lf,z=Vf(J)??Qf;if(MU)await MU;if(j)await U.dispose();return await U.init({connectSrc:$,coreMode:w,debug:_,interactionTimeout:N,lazyLoad:A??!1,manifest:V,pendingTransportEvent:Y,popup:X??!0,transportReconnect:q,transports:z}),{coreMode:w,isLocalhost:j,popup:X??!0,TrezorConnect:U}}function WU(U,f){let $=k.getNetworkForChain(f).bip32,B=[$,...L$.filter((N)=>N.public!==$.public||N.private!==$.private)],_;for(let N of B)try{let A=VU.HDKey.fromExtendedKey(U,N);if(!(A.publicKey&&A.chainCode))throw Error("Extended key is missing public key data");return new VU.HDKey({chainCode:A.chainCode,depth:A.depth,index:A.index,parentFingerprint:A.parentFingerprint,publicKey:A.publicKey,versions:$}).publicExtendedKey}catch(A){_=A}throw _ instanceof Error?_:Error("Unable to parse Trezor extended public key")}function Wf(U,f){if(!U)return;try{return WU(U,f)}catch{return U}}async function Of(U){let{Script:f}=await import("@swapkit/utxo-signer");try{let[$,B]=f.decode(U),_=B===0?new Uint8Array:B;if($!=="RETURN"||!(_ instanceof Uint8Array))return null;return $U.hex.encode(f.encode(["RETURN",_]))===$U.hex.encode(U)?$U.hex.encode(_):null}catch{return null}}async function mU(U,f,$){if(f!==0n)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:$,error:"OP_RETURN output carrying value cannot be signed"}});let B=await Of(U);if(B===null)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:$,error:"Malformed OP_RETURN output cannot be signed"}});return{amount:"0",op_return_data:B,script_type:"PAYTOOPRETURN"}}async function qf(U,f,$){if(!f)return;let B=$U.hex.encode(new TextEncoder().encode(f));for(let _=0;_<U.outputsLength;_++){let N=U.getOutput(_).script;if(N?.[0]===106&&await Of(N)===B)return}throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:$,error:"Transaction does not carry the provided memo"}})}function V$(U,f){switch(f[0]){case 86:return U===M.Chain.Bitcoin?{input:"SPENDTAPROOT",output:"PAYTOTAPROOT",utxo:M.UTXOScriptType.P2TR}:null;case 84:return{input:"SPENDWITNESS",output:"PAYTOWITNESS",utxo:M.UTXOScriptType.P2WPKH};case 49:return{input:"SPENDP2SHWITNESS",output:"PAYTOP2SHWITNESS",utxo:M.UTXOScriptType.P2SH_P2WPKH};case 44:return{input:"SPENDADDRESS",output:"PAYTOADDRESS",utxo:M.UTXOScriptType.P2PKH};default:return null}}function _U(U){return U.map((f,$)=>$<3?(f|2147483648)>>>0:f)}function G$(U){return Array.isArray(U)&&U[0]instanceof Uint8Array&&typeof U[1]==="object"&&U[1]!==null&&typeof U[1].fingerprint==="number"&&Array.isArray(U[1].path)}function W$(U){if(!Array.isArray(U.bip32Derivation))return;let[f]=U.bip32Derivation;return G$(f)?f:void 0}function O$(U){if(!(Array.isArray(U)&&U[0]instanceof Uint8Array))return!1;let f=U[1];return Array.isArray(f?.hashes)&&Array.isArray(f?.der?.path)}function D$(U,f){let $=Array.isArray(U.tapBip32Derivation)?U.tapBip32Derivation:[];if($.length===0)return;let{tapInternalKey:B}=U,_=$.filter((Y)=>O$(Y)&&Y[1].hashes.length===0&&(!B||$U.hex.encode(Y[0])===$U.hex.encode(B))),[N,A]=_[0]??[];if(_.length!==1||!(N&&A))throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:M.Chain.Bitcoin,error:`Input ${f} has no single taproot key-path origin to sign with`}});return{path:A.der.path,xOnlyKey:N}}function jf(U){if(U.witnessUtxo?.amount!==void 0)return U.witnessUtxo.amount.toString();let f=U.index!==void 0?U.nonWitnessUtxo?.outputs?.[U.index]:void 0;if(f?.amount!==void 0)return f.amount.toString();return}function Df(U,f){let $=Buffer.from(U,"hex"),B=$[1]!==void 0?$[1]+2:void 0;if(B!==void 0&&$.length===B)return new Uint8Array([...$,f===M.Chain.BitcoinCash?J$:1]);return new Uint8Array($)}function R$(U,f,$){let B=[];for(let _=0;_<U.inputsLength;_++){let N=U.getInput(_);B.push({address_n:f,amount:N.value.toString(),prev_hash:$.encode(N.txid),prev_index:N.index,script_type:"SPENDADDRESS"})}return B}async function T$(U,f,$,B){let _=[];for(let N=0;N<U.outputsLength;N++){let A=U.getOutput(N),Y=A.scriptPubkey;if(Y?.[0]===106){_.push(await mU(Y,A.value,B));continue}let X=await w$(Y);if(!X&&A.value>0n)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:B,error:"Unable to decode output address from scriptPubkey"}});if(X===$)_.push({address_n:f,amount:A.value.toString(),script_type:"PAYTOADDRESS"});else _.push({address:X,amount:A.value.toString(),script_type:"PAYTOADDRESS"})}return _}async function w$(U){try{let{OutScript:f,Address:$,NETWORKS:B}=await import("@swapkit/utxo-signer"),_=f.decode(U);if(_.type==="pkh"||_.type==="pk")return $(B.zcash).encode(_)}catch{}return}async function H$(U,f){let{ZcashTransaction:$,Script:B,createPCZT:_}=await import("@swapkit/utxo-signer"),N=$.fromHex(U,{allowUnknownOutputs:!0}),A=_({coinType:f.getGlobal().coinType,consensusBranchId:N.consensusBranchId,expiryHeight:N.expiryHeight,lockTime:N.lockTime,version:N.version,versionGroupId:N.versionGroupId});for(let Y=0;Y<f.inputsLength;Y++)A.addInput(f.getInput(Y));for(let Y=0;Y<f.outputsLength;Y++)A.addOutput(f.getOutput(Y));for(let Y=0;Y<N.inputsLength;Y++){let X=N.getInput(Y),q=X.scriptSig??X.script;if(q&&q.length>0){let J=B.decode(q);if(J.length>=2)A.addSignature(Y,J[1],J[0])}}return A}async function k$(U){let{hex:f}=await import("@scure/base"),$=k.getUtxoApi(M.Chain.Zcash),B=new Map;return Promise.all(Array.from({length:U.inputsLength},async(_,N)=>{let A=U.getInput(N),Y=f.encode(A.txid);if(A.value>0n)return{hash:Y,index:A.index,value:Number(A.value)};let X=B.get(Y)??$.getTransactionDetails(Y);B.set(Y,X);let q=(await X).outputs.find(({index:J})=>J===A.index);if(!q||!(q.value>0))throw new M.SwapKitError({errorKey:"wallet_missing_params",info:{chain:M.Chain.Zcash,inputIndex:N,reason:"Unable to resolve the Zcash input amount",txid:Y}});return{hash:Y,index:A.index,value:q.value}}))}function E$(U,f,$,B){let _=[];for(let N=0;N<U.inputsLength;N++){let A=U.getInput(N),Y=f[N];_.push({address_n:$,amount:Y?.value?.toString()||A.value?.toString()||"0",prev_hash:A.txid?B.encode(A.txid):"",prev_index:A.index??0,script_type:"SPENDADDRESS"})}return _}async function m$({addressN:U,chain:f,myAddress:$,network:B,tx:_}){let N=[];for(let A=0;A<_.outputsLength;A++){let Y=_.getOutput(A),X=_.getOutputAddress(A,B),q=Y.script;if(q?.[0]===106){N.push(await mU(q,Y.amount,f));continue}if(!X&&(Y.amount??0n)>0n)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:f,error:"Unable to decode output address"}});let L=X===$||!X?{address_n:U}:{address:X};N.push({...L,amount:Y.amount?.toString()||"0",script_type:"PAYTOADDRESS"})}return N}function z$({inputs:U,outputs:f,...$}){let B=(A)=>A.reduce((Y,{amount:X})=>Y+BigInt(X),0n),_=B(U),N=B(f);return{...$,fee:(_-N).toString(),inputAmounts:U.map(({amount:A})=>A),inputs:U.map(({prev_hash:A,prev_index:Y})=>`${A}:${Y}`),inputTotal:_.toString(),outputs:f.map(({address:A,amount:Y,script_type:X})=>({amount:Y,kind:X==="PAYTOOPRETURN"?"op_return":A?"external":"change"})),outputTotal:N.toString()}}async function ZU(U,f,$,B,_,N,A,Y){let X=[];for(let q=0;q<U.outputsLength;q++){let J=U.getOutput(q),L=U.getOutputAddress(q,f);if(J.script?.[0]===106){X.push(await mU(J.script,J.amount,_));continue}if(!L)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:_,error:"Unable to decode output address from scriptPubkey"}});if(J.amount===void 0)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:_,error:"Output amount is missing"}});let V=_===M.Chain.BitcoinCash,j=V?A(L):L,w=V?Y(j)===Y(B):j===B;X.push(w?{address_n:$,amount:J.amount.toString(),script_type:N.output}:{address:j,amount:J.amount.toString(),script_type:"PAYTOADDRESS"})}return X}function EU(U){return U===M.Chain.Bitcoin||U===M.Chain.Litecoin}function S$(U){return U===M.Chain.BitcoinCash||U===M.Chain.Dash||U===M.Chain.Dogecoin}function Jf(U,f){if(U!==M.Chain.Dash)return;let $=new Map;for(let B of f){if(!B.txHex)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:U,error:`Missing previous transaction hex for ${B.hash}:${B.index}`}});$.set(B.hash,{details:{},hex:B.txHex,txid:B.hash})}return[...$.values()]}async function F$({address:U,chain:f,derivationPath:$}){switch(f){case M.Chain.Arbitrum:case M.Chain.Arc:case M.Chain.Aurora:case M.Chain.Avalanche:case M.Chain.Base:case M.Chain.Berachain:case M.Chain.BinanceSmartChain:case M.Chain.Ethereum:case M.Chain.Gnosis:case M.Chain.Hyperevm:case M.Chain.Monad:case M.Chain.Optimism:case M.Chain.Polygon:case M.Chain.Robinhood:case M.Chain.XLayer:{let{getProvider:B,getEvmToolboxAsync:_}=await import("@swapkit/toolboxes/evm"),{getEVMSigner:N}=await Promise.resolve().then(() => (yU(),gU)),A=await B(f),Y=await N({chain:f,derivationPath:$,provider:A}),X=await Y.getAddress();return{...await _(f,{provider:A,signer:Y}),address:X}}case M.Chain.Cardano:{let{getCardanoToolbox:B}=await import("@swapkit/toolboxes/cardano"),{getCardanoSigner:_}=await Promise.resolve().then(() => (uU(),cU)),N=await import("@trezor/connect-web"),A=await _({connect:N,derivationPath:$}),Y=A.getAddress();return{...B({signer:A}),address:Y}}case M.Chain.Hype:{let{getHyperCoreToolbox:B}=await import("@swapkit/toolboxes/hypercore"),{getHyperCoreSigner:_}=await Promise.resolve().then(() => (rU(),sU)),N=_({address:U,derivationPath:$}),A=await N.getAddress();return{...B({signer:N}),address:A}}case M.Chain.Ripple:{let{getRippleToolbox:B}=await import("@swapkit/toolboxes/ripple"),{getRippleSigner:_}=await Promise.resolve().then(() => (oU(),iU)),N=_({derivationPath:$}),A=U??await N.getAddress();return{...B({signer:N}),address:A}}case M.Chain.Solana:{let{getSolanaToolbox:B}=await import("@swapkit/toolboxes/solana"),{getSolanaSigner:_}=await Promise.resolve().then(() => (eU(),tU)),N=_({address:U,derivationPath:$}),A=U??await N.getAddress();return{...B({signer:N}),address:A}}case M.Chain.Stellar:{let{getStellarToolbox:B}=await import("@swapkit/toolboxes/stellar"),{getStellarSigner:_}=await Promise.resolve().then(() => (Nf(),Mf)),N=_({derivationPath:$}),A=U??await N.getAddress();return{...B({signer:N}),address:A}}case M.Chain.Tron:{let{getTronToolbox:B}=await import("@swapkit/toolboxes/tron"),{getTronSigner:_}=await Promise.resolve().then(() => (Xf(),Yf)),N=_({address:U,derivationPath:$}),A=await N.getAddress();return{...B({signer:N}),address:A}}case M.Chain.Zcash:{let{getUtxoToolbox:B}=await import("@swapkit/toolboxes/utxo"),_=f.toLowerCase(),N=M.derivationPathToString($),Y=U??await(async()=>{let Q=(await import("@trezor/connect-web")).default,{success:O,payload:D}=await Q.getAddress({coin:_,path:N});if(!O)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:f,error:D.error||"Unknown error"}});return D.address})(),X=async(Q,O)=>{let D=(await import("@trezor/connect-web")).default,{ZcashVersion:P,ZcashVersionGroupId:I}=await import("@swapkit/utxo-signer"),v={...Q,version:P.NU5,versionGroupId:I.NU5},c=await D.signTransaction({...v,coin:_,overwintered:!0});if(!c.success)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...c.payload,chain:f,derivationPath:$,request:z$(v),signingPath:O}});return c.payload.serializedTx},q=async(Q)=>{let{hex:O}=await import("@scure/base"),D=_U($),P=Q.getGlobal(),I=R$(Q,D,O),v=await T$(Q,D,Y,f),c={branchId:P.consensusBranchId,expiry:P.expiryHeight,inputs:I,locktime:P.lockTime,outputs:v},i=await X(c,"pczt");return{serializedTx:i,signedPczt:await H$(i,Q)}},J=async(Q)=>{let{ZcashTransaction:O}=await import("@swapkit/utxo-signer");return O.fromHex(Q,{allowUnknownOutputs:!0})},L=async(Q)=>{let{hex:O}=await import("@scure/base"),{NETWORKS:D}=await import("@swapkit/utxo-signer"),P=_U($),I=E$(Q,await k$(Q),P,O),v=await m$({addressN:P,chain:f,myAddress:Y,network:D.zcash,tx:Q}),c={branchId:Q.consensusBranchId,expiry:Q.expiryHeight,inputs:I,locktime:Q.lockTime,outputs:v},i=await X(c,"transaction");return{serializedTx:i,signedTx:await J(i)}},V={getAddress:async()=>Y,signPCZT:async(Q)=>{return(await q(Q)).signedPczt},signTransaction:async(Q)=>{if("toPCZT"in Q){let{serializedTx:O}=await q(Q.toPCZT());return J(O)}if("getGlobal"in Q){let{serializedTx:O}=await q(Q);return J(O)}return(await L(Q)).signedTx}},j=B(M.Chain.Zcash,{signer:V}),w=async(Q)=>{if("toPCZT"in Q){let{serializedTx:D}=await q(Q.toPCZT());return j.broadcastTx(D)}if("getGlobal"in Q){let{serializedTx:D}=await q(Q);return j.broadcastTx(D)}let{serializedTx:O}=await L(Q);return j.broadcastTx(O)},z=async({recipient:Q,feeOptionKey:O,feeRate:D,...P})=>{if(!(Y&&Q))throw new M.SwapKitError({errorKey:"wallet_missing_params",info:{address:Y,recipient:Q,wallet:M.WalletOption.TREZOR}});let I=D||(await j.getFeeRates())[O||M.FeeOption.Fast],{tx:v}=await j.createTransaction({...P,feeRate:I,fetchTxHex:!1,recipient:Q,sender:Y}),{serializedTx:c}=await L(v);return j.broadcastTx(c)};return{...j,address:Y,signAndBroadcastTransaction:w,signPCZT:V.signPCZT,transfer:z}}case M.Chain.Bitcoin:case M.Chain.BitcoinCash:case M.Chain.Dash:case M.Chain.Dogecoin:case M.Chain.Litecoin:{let wf=function(Z={}){return DU(Z)},{toCashAddress:B,getUtxoToolbox:_,stripPrefix:N}=await import("@swapkit/toolboxes/utxo"),A=f,Y=V$(f,$);if(!Y)throw new M.SwapKitError({errorKey:"wallet_trezor_derivation_path_not_supported",info:{derivationPath:$}});let X=Y,q=Y.utxo===M.UTXOScriptType.P2TR,J={scriptType:Y.utxo},L=f.toLowerCase(),j=U??await(async(Z=$)=>{let S=(await import("@trezor/connect-web")).default,E=M.derivationPathToString(Z),{success:R,payload:m}=await S.getAddress({coin:L,...jU,path:E,showOnTrezor:!1});if(!R)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:f,error:m.error||"Unknown error"}});if(f===M.Chain.BitcoinCash)return N(m.address);return m.address})(),w=_(f,J),z=async(Z,S,E="")=>{await qf(Z,E,f);let R=(await import("@trezor/connect-web")).default,m=_U($),T=k.getNetworkForChain(f),b=await ZU(Z,T,m,j,f,X,B,N),K=S.map(({hash:C,index:g,value:G})=>({address_n:m,amount:G,prev_hash:C,prev_index:g,script_type:X.input})),W=await R.signTransaction({coin:L,inputs:K,outputs:b,refTxs:Jf(f,S)});if(W.success)return W.payload.serializedTx;let F=W.payload;throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:f,code:F?.code??"unknown",error:F?.error??"unknown",payload:F}})},Q=async(Z)=>{let S=(await import("@trezor/connect-web")).default,{hex:E}=await import("@scure/base"),R=_U($),m=k.getNetworkForChain(f),T;async function b(){if(!T){let G=await DU(),l=VU.HDKey.fromExtendedKey(G.xpub,m.bip32).derive(`m/${Number($[3]??0)}/${Number($[4]??0)}`);if(!l.publicKey)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_get_public_key",info:{chain:f,error:"Unable to derive Trezor leaf public key from account xpub"}});T=l.publicKey}return[T,{fingerprint:0,path:R}]}let K=[],W=[];async function F(G,H){if(q){let XU=D$(H,G);if(!XU){let[Ef,{path:SU}]=await b();XU={path:SU,xOnlyKey:Ef.slice(1)},Z.updateInput(G,{tapBip32Derivation:[[XU.xOnlyKey,{der:{fingerprint:0,path:SU},hashes:[]}]]})}if(!H.tapInternalKey)Z.updateInput(G,{tapInternalKey:XU.xOnlyKey});return XU.path}let l=W$(H),e=l??await b();if(K[G]=e[0],!l)Z.updateInput(G,{bip32Derivation:[e]});return await KU({chain:A,indexes:[G],publicKey:e[0],tx:Z}),e[1].path}for(let G=0;G<Z.inputsLength;G++){let H=Z.getInput(G),l=jf(H);if(!H.txid||H.index===void 0||!l)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:f,error:`Input ${G} is missing prevout data required by Trezor`}});let e=await F(G,H);W.push({address_n:e,amount:l,prev_hash:E.encode(H.txid),prev_index:H.index,script_type:X.input,...H.sequence!==void 0?{sequence:H.sequence}:{}})}let C=await ZU(Z,m,R,j,f,X,B,N),g=await S.signTransaction({coin:L,...jU,inputs:W,locktime:Z.lockTime,outputs:C,version:Z.version});if(!g.success){let G=g.payload;throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:f,code:G?.code??"unknown",error:G?.error??"unknown",payload:G}})}return g.payload.signatures.forEach((G,H)=>{if(!G)return;if(q){Z.updateInput(H,{tapKeySig:E.decode(G)});return}let l=K[H];if(!l)return;Z.updateInput(H,{partialSig:[[l,Df(G,f)]]})}),Z},O=async(Z)=>{let S=(await import("@trezor/connect-web")).default,{hex:E}=await import("@scure/base"),R=_U($),m=k.getNetworkForChain(f),T=[];for(let F=0;F<Z.inputsLength;F++){let C=Z.getInput(F),g=jf(C);if(!C.txid||C.index===void 0||!g)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:f,error:`Input ${F} is missing prevout data required by Trezor`}});T.push({address_n:R,amount:g,prev_hash:E.encode(C.txid),prev_index:C.index,script_type:X.input,...C.sequence!==void 0?{sequence:C.sequence}:{}})}let b=await ZU(Z,m,R,j,f,X,B,N),K=await S.signTransaction({coin:L,inputs:T,locktime:Z.lockTime,outputs:b,version:Z.version});if(K.success)return K.payload.serializedTx;let W=K.payload;throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:f,code:W?.code??"unknown",error:W?.error??"unknown",payload:W}})},D=async(Z,S,E="")=>{await qf(Z,E,f);let R=(await import("@trezor/connect-web")).default,m=k.getNetworkForChain(f),T=_U($.slice(0,3)),b=await ZU(Z,m,T,j,f,X,B,N),K=S.map(({hash:F,index:C,value:g,derivationIndex:G,isChange:H})=>{let l=H?1:0;return{address_n:[...T,l,G],amount:g,prev_hash:F,prev_index:C,script_type:X.input}}),W=await R.signTransaction({coin:L,inputs:K,outputs:b,refTxs:Jf(f,S)});if(W.success)return W.payload.serializedTx;throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:f,error:W.payload.error}})},P=async({utxos:Z,recipient:S,assetValue:E,memo:R,feeRate:m,feeOptionKey:T})=>{let b=_(f,J),K=m||(await b.getFeeRates())[T||M.FeeOption.Fast],{tx:W,inputs:F}=await b.createTransaction({assetValue:E,feeRate:K,fetchTxHex:f===M.Chain.Dash,memo:R,recipient:S,sender:j}),C=F.map((G)=>{let H=Z.find((l)=>l.hash===G.hash&&l.index===G.index);return{...G,derivationIndex:H?.derivationIndex??0,isChange:H?.isChange??!1,txHex:H?.txHex}}),g=await D(W,C,R);return b.broadcastTx(g)},I=async({recipient:Z,feeOptionKey:S,feeRate:E,memo:R,...m})=>{if(!(j&&Z))throw new M.SwapKitError({errorKey:"wallet_missing_params",info:{address:j,memo:R,recipient:Z,wallet:M.WalletOption.TREZOR}});let T=_(f,J),b=E||(await T.getFeeRates())[S||M.FeeOption.Fast],K=T.createTransaction,{tx:W,inputs:F}=await K({...m,feeRate:b,fetchTxHex:f===M.Chain.Dash,memo:R,recipient:Z,sender:j}),C=await z(W,F,R);return await T.broadcastTx(C)},v=EU(f)?await _(A,{...J,signer:{getAddress:async()=>j,signTransaction:Q}}):w,c=S$(f)?async(Z)=>w.broadcastTx(await O(Z)):v.signAndBroadcastTransaction,i=EU(f)?v.signTransaction:z,OU=EU(f)?v.transfer:I;async function DU({accountIndex:Z}={}){let S=(await import("@trezor/connect-web")).default,E=k.getUTXOAccountPath({accountIndex:Z,chain:A,derivationPath:$}),R=M.derivationPathToString(E),m=`${f}:${R}`,T=LU.get(m);if(T)return T;let b=await S.getPublicKey({coin:L,path:R}),{success:K,payload:W}=b;if(!K)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_get_public_key",info:{chain:f,error:W.error||"Unknown error"}});let F=WU(W.xpub,A),C=Wf(W.xpubSegwit,A),g={accountIndex:k.getUTXOAccountIndexFromPath(E),chainCode:W.chainCode,depth:W.depth,fingerprint:W.fingerprint,path:W.serializedPath,publicKey:W.publicKey,xpub:F,xpubSegwit:C};return LU.set(m,g),g}async function zU({accountIndex:Z,index:S,change:E=!1}){k.assertDerivationIndex("index",S);let R=(await import("@trezor/connect-web")).default,m=k.getUTXOAccountPath({accountIndex:Z,chain:A,derivationPath:$}),T=`${M.derivationPathToString(m)}/${Number(E)}/${S}`,{success:b,payload:K}=await R.getAddress({coin:L,...jU,path:T,showOnTrezor:!1});if(!b)return;let W=K.address;if(f===M.Chain.BitcoinCash)W=(await _(f)).stripPrefix(K.address);let F=await R.getPublicKey({coin:L,...jU,path:T,scriptType:X.input,showOnTrezor:!1}),C=F.success?F.payload.publicKey:"";return{accountIndex:k.getUTXOAccountIndexFromPath(m),address:W,change:E,index:S,path:T,pubkey:C}}async function Hf({accountIndex:Z,count:S,startIndex:E=0,change:R=!1}){k.assertDerivationIndex("count",S),k.assertDerivationIndex("startIndex",E);let m=(await import("@trezor/connect-web")).default,T=k.getUTXOAccountPath({accountIndex:Z,chain:A,derivationPath:$}),b=M.derivationPathToString(T),K=Array.from({length:S},(g,G)=>({coin:L,path:`${b}/${Number(R)}/${E+G}`,showOnTrezor:!1})),{success:W,payload:F}=await m.getAddress({...jU,bundle:K});if(!W||!Array.isArray(F))return[];return await Promise.all(F.map(async(g,G)=>{let H=g.address;if(f===M.Chain.BitcoinCash)H=(await _(f)).stripPrefix(g.address);return{accountIndex:k.getUTXOAccountIndexFromPath(T),address:H,change:R,index:E+G,path:`${b}/${Number(R)}/${E+G}`,pubkey:""}}))}let kf=k.createHDWalletHelpers({chain:f,deriveAddress:zU,getBalance:v.getBalance,getUtxos:(Z)=>k.getUtxoApi(f).getUtxos({address:Z,fetchTxHex:!0})});return{...v,...kf,address:j,deriveAddressAtIndex:zU,deriveAddresses:Hf,getExtendedPublicKey:wf,getExtendedPublicKeyInfo:DU,signAndBroadcastTransaction:c,signTransaction:i,signTransactionWithMultipleInputs:D,transfer:OU,transferFromMultipleAddresses:P}}default:throw new M.SwapKitError({errorKey:"wallet_chain_not_supported",info:{chain:f,wallet:M.WalletOption.TREZOR}})}}async function Rf(U,f,{accountIndex:$}={}){if(![M.Chain.BitcoinCash,M.Chain.Bitcoin,M.Chain.Dash,M.Chain.Dogecoin,M.Chain.Litecoin,M.Chain.Zcash].includes(U))throw new M.SwapKitError({errorKey:"wallet_chain_not_supported",info:{chain:U,wallet:M.WalletOption.TREZOR}});let{TrezorConnect:B}=await Z$(),_=U,N=f??M.NetworkDerivationPath[U],A=U.toLowerCase(),Y=k.getUTXOAccountPath({accountIndex:$,chain:_,derivationPath:N}),X=M.derivationPathToString(Y),q=`${U}:${X}`,J=LU.get(q);if(J)return J;let{success:L,payload:V}=await B.getPublicKey({coin:A,path:X,showOnTrezor:!0});if(!L)throw new M.SwapKitError({errorKey:"wallet_trezor_failed_to_get_public_key",info:{chain:U,error:V.error||"Unknown error"}});let j={accountIndex:k.getUTXOAccountIndexFromPath(Y),chainCode:V.chainCode,depth:V.depth,fingerprint:V.fingerprint,path:V.serializedPath,publicKey:V.publicKey,xpub:WU(V.xpub,_),xpubSegwit:Wf(V.xpubSegwit,_)};return LU.set(q,j),j}var Tf=GU.createWallet({connect:({addChain:U,supportedChains:f,walletType:$})=>async function(_,N,{address:A}={}){let[Y]=M.filterSupportedChains({chains:_,supportedChains:f,walletType:$});if(!Y)throw new M.SwapKitError({errorKey:"wallet_chain_not_supported",info:{chain:Y,wallet:M.WalletOption.TREZOR}});let X=(await import("@trezor/connect-web")).default,q=M.SKConfig.get("integrations").trezor,{connectSrc:J,coreMode:L,debug:V,interactionTimeout:j,lazyLoad:w,pendingTransportEvent:z,popup:Q,transportReconnect:O,transports:D,...P}=q??{},I={...P,appName:YU(q?.appName,JU.appName),appUrl:YU(q?.appUrl,Gf()),email:YU(q?.email,JU.email)},v=typeof globalThis.location<"u"&&["localhost","127.0.0.1"].includes(globalThis.location.hostname),c=Zf(L)??Lf,i=Vf(D)??Qf;if(MU)await MU;if(v)await X.dispose();await X.init({connectSrc:J,coreMode:c,debug:V,interactionTimeout:j,lazyLoad:w??!1,manifest:I,pendingTransportEvent:z,popup:Q??!0,transportReconnect:O,transports:i});let OU=await F$({address:A,chain:Y,derivationPath:N});return U({...OU,chain:Y,disconnect:Q$,walletType:$}),!0},getExtendedPublicKey:Rf,name:"connectTrezor",signingSupport:{[M.Chain.Arbitrum]:{direct:!0,typedData:!0},[M.Chain.Arc]:{direct:!0,typedData:!0},[M.Chain.Aurora]:{direct:!0,typedData:!0},[M.Chain.Avalanche]:{direct:!0,typedData:!0},[M.Chain.Base]:{direct:!0,typedData:!0},[M.Chain.Berachain]:{direct:!0,typedData:!0},[M.Chain.BinanceSmartChain]:{direct:!0,typedData:!0},[M.Chain.Bitcoin]:{direct:!0},[M.Chain.BitcoinCash]:{direct:!0},[M.Chain.Cardano]:{direct:!0},[M.Chain.Dash]:{direct:!0},[M.Chain.Ethereum]:{direct:!0,typedData:!0},[M.Chain.Gnosis]:{direct:!0,typedData:!0},[M.Chain.Dogecoin]:{direct:!0},[M.Chain.Hype]:{direct:!0},[M.Chain.Hyperevm]:{direct:!0,typedData:!0},[M.Chain.Litecoin]:{direct:!0},[M.Chain.Monad]:{direct:!0,typedData:!0},[M.Chain.Optimism]:{direct:!0,typedData:!0},[M.Chain.Polygon]:{direct:!0,typedData:!0},[M.Chain.Ripple]:{direct:!0},[M.Chain.Robinhood]:{direct:!0,typedData:!0},[M.Chain.Solana]:{direct:!0},[M.Chain.Stellar]:{direct:!0},[M.Chain.Tron]:{direct:!0},[M.Chain.XLayer]:{direct:!0,typedData:!0},[M.Chain.Zcash]:{direct:!0}},supportedChains:[M.Chain.Arbitrum,M.Chain.Arc,M.Chain.Aurora,M.Chain.Avalanche,M.Chain.Base,M.Chain.Berachain,M.Chain.BinanceSmartChain,M.Chain.Bitcoin,M.Chain.BitcoinCash,M.Chain.Cardano,M.Chain.Dash,M.Chain.Dogecoin,M.Chain.Ethereum,M.Chain.Gnosis,M.Chain.Hype,M.Chain.Hyperevm,M.Chain.Litecoin,M.Chain.Monad,M.Chain.Optimism,M.Chain.Polygon,M.Chain.Ripple,M.Chain.Robinhood,M.Chain.Solana,M.Chain.Stellar,M.Chain.Tron,M.Chain.XLayer,M.Chain.Zcash],walletType:M.WalletOption.TREZOR}),C$=GU.getWalletSupportedChains(Tf);
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=4066C241884E84DC64756E2164756E21
|
|
4
4
|
//# sourceMappingURL=index.cjs.map
|