@swapkit/wallet-hardware 6.1.1 → 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-jzrytcrf.js → chunk-0k1b2ddn.js} +3 -3
- package/dist/{chunk-jzrytcrf.js.map → chunk-0k1b2ddn.js.map} +2 -2
- package/dist/{chunk-jewm2ag3.js → chunk-2tzsz8f3.js} +4 -4
- package/dist/{chunk-jewm2ag3.js.map → chunk-2tzsz8f3.js.map} +1 -1
- package/dist/{chunk-yrxe491r.js → chunk-410fpx61.js} +4 -4
- package/dist/{chunk-yrxe491r.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-xmvg4cds.js → chunk-96p7njae.js} +3 -3
- package/dist/{chunk-xmvg4cds.js.map → chunk-96p7njae.js.map} +2 -2
- package/dist/chunk-97nsp4z6.js +5 -0
- package/dist/chunk-97nsp4z6.js.map +10 -0
- package/dist/{chunk-nhva847d.js → chunk-9a9gn4pb.js} +3 -3
- package/dist/{chunk-5p3ttw6y.js.map → chunk-9a9gn4pb.js.map} +1 -1
- package/dist/chunk-a39rm9nv.js +4 -0
- package/dist/{chunk-gr3eswf1.js.map → chunk-a39rm9nv.js.map} +5 -5
- package/dist/chunk-c8mwf9cn.js +4 -0
- package/dist/{chunk-k3thje6a.js.map → chunk-c8mwf9cn.js.map} +1 -1
- package/dist/{chunk-ds2m83jp.js → chunk-dhhmywmb.js} +4 -4
- package/dist/{chunk-ds2m83jp.js.map → chunk-dhhmywmb.js.map} +1 -1
- package/dist/{chunk-eenx3cv6.js → chunk-dsa641rq.js} +3 -3
- package/dist/{chunk-eenx3cv6.js.map → chunk-dsa641rq.js.map} +2 -2
- package/dist/{chunk-0arpsm5f.js → chunk-grj9nvte.js} +3 -3
- package/dist/{chunk-0arpsm5f.js.map → chunk-grj9nvte.js.map} +1 -1
- package/dist/{chunk-hg71hp4m.js → chunk-napm4102.js} +3 -3
- package/dist/{chunk-hg71hp4m.js.map → chunk-napm4102.js.map} +1 -1
- package/dist/{chunk-k3thje6a.js → chunk-nb08g045.js} +3 -3
- package/dist/{chunk-nhva847d.js.map → chunk-nb08g045.js.map} +1 -1
- package/dist/chunk-npe2r2ge.js +4 -0
- package/dist/{chunk-xx7cwpzq.js.map → chunk-npe2r2ge.js.map} +1 -1
- package/dist/chunk-p9mwkgye.js +4 -0
- package/dist/{chunk-09e51wma.js.map → chunk-p9mwkgye.js.map} +14 -12
- package/dist/{chunk-wfbg89d3.js → chunk-qjp8j8e5.js} +3 -3
- package/dist/{chunk-wfbg89d3.js.map → chunk-qjp8j8e5.js.map} +1 -1
- package/dist/{chunk-xn0fnag5.js → chunk-r1fk1sx9.js} +3 -3
- package/dist/{chunk-xn0fnag5.js.map → chunk-r1fk1sx9.js.map} +1 -1
- package/dist/{chunk-1amf58aq.js → chunk-ta7bqmy3.js} +3 -3
- package/dist/{chunk-1amf58aq.js.map → chunk-ta7bqmy3.js.map} +1 -1
- package/dist/{chunk-3t17wpjg.js → chunk-tgvgr630.js} +3 -3
- package/dist/{chunk-3t17wpjg.js.map → chunk-tgvgr630.js.map} +2 -2
- package/dist/chunk-v8x9ptxs.js +4 -0
- package/dist/chunk-v8x9ptxs.js.map +10 -0
- package/dist/{chunk-dptbnkzm.js → chunk-wm89desc.js} +20 -20
- package/dist/{chunk-dptbnkzm.js.map → chunk-wm89desc.js.map} +12 -10
- package/dist/{chunk-5c7b7z2d.js → chunk-wtyhjt5e.js} +3 -3
- package/dist/{chunk-5c7b7z2d.js.map → chunk-wtyhjt5e.js.map} +1 -1
- package/dist/{chunk-tm47brht.js → chunk-xskdbz15.js} +3 -3
- package/dist/{chunk-tm47brht.js.map → chunk-xskdbz15.js.map} +2 -2
- package/dist/{chunk-8m2sn76p.js → chunk-ytjqb1sd.js} +3 -3
- package/dist/{chunk-8m2sn76p.js.map → chunk-ytjqb1sd.js.map} +1 -1
- package/dist/{chunk-3h1f3hyp.js → chunk-zbesf7sy.js} +3 -3
- package/dist/{chunk-3h1f3hyp.js.map → chunk-zbesf7sy.js.map} +1 -1
- package/dist/keepkey/index.cjs +2 -2
- package/dist/keepkey/index.cjs.map +3 -3
- package/dist/keepkey/index.js +2 -2
- package/dist/keepkey/index.js.map +3 -3
- package/dist/ledger/index.cjs +30 -30
- package/dist/ledger/index.cjs.map +35 -27
- package/dist/ledger/index.js +2 -2
- package/dist/ledger/index.js.map +11 -8
- package/dist/trezor/index.cjs +2 -2
- package/dist/trezor/index.cjs.map +7 -5
- package/dist/trezor/index.js +2 -2
- package/dist/trezor/index.js.map +3 -3
- package/dist/types/helpers/cardano.d.ts +35 -0
- package/dist/types/helpers/cardano.d.ts.map +1 -0
- package/dist/types/keepkey/index.d.ts +1 -0
- package/dist/types/keepkey/index.d.ts.map +1 -1
- package/dist/types/ledger/clients/cardano.d.ts +24 -0
- package/dist/types/ledger/clients/cardano.d.ts.map +1 -0
- package/dist/types/ledger/clients/evm.d.ts +1 -0
- package/dist/types/ledger/clients/evm.d.ts.map +1 -1
- package/dist/types/ledger/clients/stellar.d.ts +13 -0
- package/dist/types/ledger/clients/stellar.d.ts.map +1 -0
- package/dist/types/ledger/clients/ton.d.ts +13 -0
- package/dist/types/ledger/clients/ton.d.ts.map +1 -0
- package/dist/types/ledger/clients/zcash.d.ts.map +1 -1
- package/dist/types/ledger/helpers/getLedgerAddress.d.ts.map +1 -1
- package/dist/types/ledger/helpers/getLedgerClient.d.ts +8 -1
- package/dist/types/ledger/helpers/getLedgerClient.d.ts.map +1 -1
- package/dist/types/ledger/index.d.ts +3 -2
- package/dist/types/ledger/index.d.ts.map +1 -1
- package/dist/types/ledger/types.d.ts +2 -2
- package/dist/types/ledger/types.d.ts.map +1 -1
- package/dist/types/trezor/cardanoSigner.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 +3 -2
- package/dist/types/trezor/index.d.ts.map +1 -1
- package/dist/types/trezor/stellarSigner.d.ts +1 -1
- package/package.json +25 -13
- package/src/helpers/cardano.ts +112 -0
- package/src/keepkey/index.ts +14 -14
- package/src/ledger/clients/cardano.ts +204 -0
- package/src/ledger/clients/evm.ts +4 -0
- package/src/ledger/clients/stellar.ts +83 -0
- package/src/ledger/clients/ton.ts +282 -0
- package/src/ledger/clients/zcash.ts +16 -6
- package/src/ledger/helpers/getLedgerAddress.ts +16 -0
- package/src/ledger/helpers/getLedgerClient.ts +13 -0
- package/src/ledger/index.ts +102 -30
- package/src/ledger/types.ts +2 -0
- package/src/trezor/cardanoSigner.ts +24 -80
- package/src/trezor/hypercoreSigner.ts +96 -0
- package/src/trezor/index.ts +153 -75
- package/dist/chunk-09e51wma.js +0 -4
- package/dist/chunk-5p3ttw6y.js +0 -4
- package/dist/chunk-gr3eswf1.js +0 -4
- package/dist/chunk-qjq7gvyx.js +0 -4
- package/dist/chunk-qjq7gvyx.js.map +0 -10
- package/dist/chunk-xx7cwpzq.js +0 -4
package/dist/trezor/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var A$=Object.create;var{getPrototypeOf:H$,defineProperty:_M,getOwnPropertyNames:CM,getOwnPropertyDescriptor:z$}=Object,IM=Object.prototype.hasOwnProperty;function KM(M){return this[M]}var E$,k$,z4=(M,$,U)=>{var X=M!=null&&typeof M==="object";if(X){var J=$?E$??=new WeakMap:k$??=new WeakMap,Q=J.get(M);if(Q)return Q}U=M!=null?A$(H$(M)):{};let B=$||!M||!M.__esModule?_M(U,"default",{value:M,enumerable:!0}):U;for(let Z of CM(M))if(!IM.call(B,Z))_M(B,Z,{get:KM.bind(M,Z),enumerable:!0});if(X)J.set(M,B);return B},S$=(M)=>{var $=(TM??=new WeakMap).get(M),U;if($)return $;if($=_M({},"__esModule",{value:!0}),M&&typeof M==="object"||typeof M==="function"){for(var X of CM(M))if(!IM.call($,X))_M($,X,{get:KM.bind(M,X),enumerable:!(U=z$(M,X))||U.enumerable})}return TM.set(M,$),$},TM,E4=(M,$)=>()=>($||M(($={exports:{}}).exports,$),$.exports);var m$=(M)=>M;function F$(M,$){this[M]=m$.bind(null,$)}var a=(M,$)=>{for(var U in $)_M(M,U,{get:$[U],enumerable:!0,configurable:!0,set:F$.bind($,U)})};var qM=(M,$)=>()=>(M&&($=M(M=0)),$);var gM={};a(gM,{getEVMSigner:()=>w$});async function w$({chain:M,derivationPath:$,provider:U}){let{AbstractSigner:X}=await import("ethers");class J extends X{address;chain;derivationPath;provider;constructor({chain:Q,derivationPath:B,provider:Z}){super(Z);this.address="",this.chain=Q,this.derivationPath=B,this.provider=Z}getAddress=async()=>{if(!this.address){let B=await(await import("@trezor/connect-web")).default.ethereumGetAddress({path:g.derivationPathToString(this.derivationPath),showOnTrezor:!0});if(!B.success)throw new g.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(Q)=>{let Z=await(await import("@trezor/connect-web")).default.ethereumSignMessage({message:Q,path:g.derivationPathToString(this.derivationPath)});if(!Z.success)throw new g.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...Z,chain:this.chain,derivationPath:this.derivationPath,message:Q}});return Z.payload.signature};signTypedData=async(Q,B,Z,_)=>{let j=(await import("@trezor/connect-web")).default,{buildEIP712DomainType:W}=await import("@swapkit/toolboxes/evm"),{TypedDataEncoder:N}=await import("ethers"),{EIP712Domain:G,...V}=B,Y=_??N.from(V).primaryType,O=W(Q),F={domain:Q,message:Z,primaryType:Y,types:{EIP712Domain:O,...V}},b=await j.ethereumSignTypedData({data:F,metamask_v4_compat:!0,path:g.derivationPathToString(this.derivationPath)});if(!b.success)throw new g.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:this.chain,error:b.payload.error}});return b.payload.signature.startsWith("0x")?b.payload.signature:`0x${b.payload.signature}`};signTransaction=async({to:Q,gasLimit:B,value:Z,data:_,nonce:j,maxFeePerGas:W,maxPriorityFeePerGas:N,gasPrice:G})=>{if(!Q)throw new g.SwapKitError({errorKey:"wallet_missing_params",info:{to:Q}});if(!B)throw new g.SwapKitError({errorKey:"wallet_missing_params",info:{gasLimit:B}});let V=W!=null||N!=null;if(V&&!W)throw new g.SwapKitError({errorKey:"wallet_missing_params",info:{maxFeePerGas:W}});if(!(V||G))throw new g.SwapKitError({errorKey:"wallet_missing_params",info:{gasPrice:G}});let Y=(await import("@trezor/connect-web")).default,{toHexString:O}=await import("@swapkit/toolboxes/evm"),F=V?{maxFeePerGas:O(BigInt(W?.toString()||0)),maxPriorityFeePerGas:O(BigInt(N?.toString()||0))}:G&&{gasPrice:O(BigInt(G?.toString()||0))}||{gasPrice:"0x0"},b=O(BigInt(j||await this.provider.getTransactionCount(await this.getAddress(),"pending"))),w={chainId:Number.parseInt(g.ChainToChainId[this.chain],10),data:_?.toString()||"0x",gasLimit:O(BigInt(B?.toString()||0)),nonce:b,to:Q.toString(),value:O(BigInt(Z?.toString()||0)),...F},{success:x,payload:P}=await Y.ethereumSignTransaction({path:g.derivationPathToString(this.derivationPath),transaction:w});if(!x)throw new g.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...P,chain:this.chain,derivationPath:this.derivationPath}});let v=P.serializedTx?P.serializedTx.startsWith("0x")?P.serializedTx:`0x${P.serializedTx}`:void 0;if(!v)throw new g.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:this.chain,derivationPath:this.derivationPath}});return v};connect=(Q)=>{if(!Q)throw new g.SwapKitError({errorKey:"wallet_provider_not_found",info:{chain:this.chain,derivationPath:this.derivationPath,wallet:g.WalletOption.TREZOR}});return new J({chain:this.chain,derivationPath:this.derivationPath,provider:Q})}}return new J({chain:M,derivationPath:$,provider:U})}var g;var PM=qM(()=>{g=require("@swapkit/helpers")});var xM={};a(xM,{toTrezorCardanoTransaction:()=>vM,getCardanoSigner:()=>b$,addTrezorWitnesses:()=>hM});function yM({CARDANO:M,PROTO:$}){return{derivationType:$.CardanoDerivationType.ICARUS,mainnet:{networkId:M.NETWORK_IDS.mainnet,protocolMagic:M.PROTOCOL_MAGICS.mainnet}}}function r(M){return new l.SwapKitError({errorKey:"wallet_trezor_method_not_supported",info:{chain:l.Chain.Cardano,reason:M}})}function AM(M){return new l.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:l.Chain.Cardano,error:M}})}function UM(M,$){let X=typeof M==="object"&&M!==null&&"toFixed"in M||Number.isSafeInteger(M)?String(M.toFixed()):"";if(!/^\d+$/.test(X))throw r(`Invalid ${$} in Cardano transaction`);return X}function C$(M){return[...M].map(([$,U])=>({policyId:e.hex.encode($),tokenAmounts:[...U].map(([X,J])=>({amount:UM(J,"token amount"),assetNameBytes:e.hex.encode(X)}))}))}async function I$(M,$,U){let X,J,Q;if(Array.isArray(M)){if(M.length!==2)throw r("Trezor cannot sign Cardano outputs with a datum");[X,J]=M,Q=U.CardanoTxOutputSerializationFormat.ARRAY_LEGACY}else if(M instanceof Map){if(M.has(2))throw r("Trezor cannot sign Cardano outputs with a datum");if(M.has(3))throw r("Trezor cannot sign Cardano outputs with a reference script");if(M.size!==2)throw r("Unsupported field in Cardano output");X=M.get(0),J=M.get(1),Q=U.CardanoTxOutputSerializationFormat.MAP_BABBAGE}else throw r("Invalid Cardano output");if(Array.isArray(J)&&J.length!==2)throw r("Invalid Cardano output value");let[B,Z]=Array.isArray(J)?J:[J],_=await u.getCardanoAddressFromBytes(X);return{..._===$.address?{addressParameters:{addressType:U.CardanoAddressType.BASE,path:$.path,stakingPath:$.stakingPath}}:{address:_},amount:UM(B,"output amount"),format:Q,...Z===void 0?{}:{tokenBundle:C$(Z)}}}function K$(M,$){let U=typeof M==="object"&&M!==null&&"tag"in M&&M.tag===T$&&"value"in M;return{inputs:(U?M.value:M).map((Q)=>{if(Q.length!==2)throw r("Invalid Cardano input");let[B,Z]=Q;return{path:$,prev_hash:e.hex.encode(B),prev_index:Number(UM(Z,"input index"))}}),tagCborSets:U}}async function vM(M,$,U){let{body:X}=await u.decodeCardanoTransaction(M),{derivationType:J,mainnet:Q}=yM(U),{PROTO:B}=U,Z=Object.values(t),_=[...X.keys()].filter((V)=>!Z.includes(V));if(_.length>0)throw r(`Trezor cannot sign Cardano transactions with body fields ${_.join(", ")}`);let j=X.get(t.OUTPUTS),W=X.get(t.AUXILIARY_DATA_HASH),N=X.get(t.TTL),G=X.get(t.VALIDITY_INTERVAL_START);return{...K$(X.get(t.INPUTS),$.path),...Q,derivationType:J,fee:UM(X.get(t.FEE),"fee"),outputs:await Promise.all(j.map((V)=>I$(V,$,B))),signingMode:B.CardanoTxSigningMode.ORDINARY_TRANSACTION,...W?{auxiliaryData:{hash:e.hex.encode(W)}}:{},...N===void 0?{}:{ttl:UM(N,"ttl")},...G===void 0?{}:{validityIntervalStart:UM(G,"validity interval start")}}}async function hM(M,{hash:$,witnesses:U},X,{PROTO:J}){let{bodyHash:Q}=await u.decodeCardanoTransaction(M);if($.toLowerCase()!==Q)throw AM("Trezor signed a different transaction body");let B=U.map(({pubKey:Z,signature:_,type:j})=>{if(j!==J.CardanoTxWitnessType.SHELLEY_WITNESS||Z.toLowerCase()!==X)throw AM("Trezor returned a witness for an unexpected key");return{publicKey:e.hex.decode(Z),signature:e.hex.decode(_)}});return u.addCardanoVkeyWitnesses(M,B)}async function b$({connect:M,derivationPath:$}){let[U,X,J,Q,B]=$;if($.length!==5||Q!==0||B===void 0)throw new l.SwapKitError({errorKey:"wallet_trezor_derivation_path_not_supported",info:{chain:l.Chain.Cardano,derivationPath:$}});let Z=l.derivationPathToString($),_=l.derivationPathToString([U,X,J,2,0]),{derivationType:j,mainnet:W}=yM(M),N=M.default,G=await N.cardanoGetPublicKey({bundle:[Z,_].map((w)=>({derivationType:j,path:w}))});if(!G.success)throw new l.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:l.Chain.Cardano,derivationPath:$,error:G.payload.error}});let[V,Y]=G.payload.map(({node:w})=>Buffer.from(w.public_key,"hex")),O=await u.getCardanoPublicKeyHash(V),F=await u.getCardanoAddressFromBytes(Buffer.concat([Buffer.from([W.networkId]),O,await u.getCardanoPublicKeyHash(Y)]));async function b(w){let x=await vM(w,{address:F,path:Z,stakingPath:_},M),P=await N.cardanoSignTransaction(x);if(!P.success)throw AM(P.payload.error);return hM(w,P.payload,V.toString("hex"),M)}return{getAddress:()=>F,publicKey:V,publicKeyHash:O,signTransaction:b}}var e,l,u,t,T$=258;var cM=qM(()=>{e=require("@scure/base"),l=require("@swapkit/helpers"),u=require("@swapkit/toolboxes/cardano");t={AUXILIARY_DATA_HASH:7,FEE:2,INPUTS:0,OUTPUTS:1,TTL:3,VALIDITY_INTERVAL_START:8}});var uM={};a(uM,{toTrezorRippleTransaction:()=>lM,getRippleSigner:()=>P$});function o(M){return new p.SwapKitError({errorKey:"wallet_trezor_method_not_supported",info:{chain:p.Chain.Ripple,reason:M}})}function lM(M){let $=M;if($.TransactionType!=="Payment")throw o(`Trezor only signs XRP payments, got ${String($.TransactionType)}`);let U=Object.keys($).filter((W)=>$[W]!==void 0&&$[W]!==null&&!g$.has(W));if(U.length>0)throw o(`Trezor cannot sign XRP payments with ${U.join(", ")}`);let{Amount:X,Destination:J,DestinationTag:Q,Fee:B,Flags:Z,LastLedgerSequence:_,Sequence:j}=$;if(typeof X!=="string"||!/^\d+$/.test(X))throw o("Trezor only signs native XRP amounts");if(typeof J!=="string")throw o("Missing destination");if(!XM.isValidClassicAddress(J))throw o("Destination must be a classic XRP address");if(typeof B!=="string"||typeof j!=="number")throw o("Transaction is not autofilled");if(Z!==void 0&&typeof Z!=="number")throw o("Flags must be numeric");if(((Z??0)&XM.GlobalFlags.tfInnerBatchTxn)!==0)throw o("Trezor cannot sign Batch inner XRP transactions");return{fee:B,flags:Z,maxLedgerVersion:_,payment:{amount:X,destination:J,destinationTag:Q},sequence:j}}function P$({derivationPath:M}){let $=p.derivationPathToString(M),U="";async function X(){if(U)return U;let B=await(await import("@trezor/connect-web")).default.rippleGetAddress({path:$,showOnTrezor:!0});if(!B.success)throw new p.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:p.Chain.Ripple,derivationPath:M,error:B.payload.error}});return U=B.payload.address,U}async function J(Q){let B=lM(Q);if(Q.Account!==await X())throw o("Transaction account does not match the Trezor address");let _=await(await import("@trezor/connect-web")).default.rippleSignTransaction({path:$,transaction:B});if(!_.success)throw new p.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:p.Chain.Ripple,error:_.payload.error}});let j=_.payload.serializedTx.toUpperCase();return{hash:XM.hashes.hashSignedTx(j),tx_blob:j}}return{getAddress:X,signTransaction:J}}var p,XM,g$;var pM=qM(()=>{p=require("@swapkit/helpers"),XM=require("xrpl"),g$=new Set(["Account","Amount","Destination","DestinationTag","Fee","Flags","LastLedgerSequence","Sequence","SigningPubKey","TransactionType"])});var sM={};a(sM,{getSolanaSigner:()=>c$});function y$(M){return new y.SwapKitError({errorKey:"wallet_trezor_method_not_supported",info:{chain:y.Chain.Solana,reason:M}})}function v$(M){if("version"in M){let{header:$,staticAccountKeys:U}=M.message;return{message:M.message.serialize(),signerKeys:U.slice(0,$.numRequiredSignatures)}}return{message:M.serializeMessage(),signerKeys:M.signatures.map(({publicKey:$})=>$)}}function h$(M,$){let{message:U,signerKeys:X}=v$(M),J=X.find((Q)=>Q.toBase58()===$);if(!J)throw y$("Trezor account is not a required signer of this transaction");return{message:U,signerKey:J}}function x$(M,{message:$,signature:U,signerKey:X}){if(U.length!==64)throw new y.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:y.Chain.Solana,error:`Invalid signature length: ${U.length}`}});if(!dM.ed25519.verify(U,$,X.toBytes()))throw new y.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:y.Chain.Solana,error:"Signature does not match the Trezor account"}});return M.addSignature(X,Buffer.from(U)),M}function c$({address:M,derivationPath:$}){let[U,X]=$;if(U!==44||X!==501||$.length>4)throw new y.SwapKitError({errorKey:"wallet_trezor_derivation_path_not_supported",info:{chain:y.Chain.Solana,derivationPath:$}});let J=y.derivationPathToString($,{allHardened:!0}),Q=M?new VM.PublicKey(M):null,B=null;async function Z(j){if(B)return B.toBase58();let N=await(await import("@trezor/connect-web")).default.solanaGetAddress({path:J,showOnTrezor:j});if(!N.success)throw new y.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:y.Chain.Solana,derivationPath:$,error:N.payload.error}});let G=new VM.PublicKey(N.payload.address);if(Q&&!G.equals(Q))throw new y.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:y.Chain.Solana,derivationPath:$,error:"Trezor account does not match the restored address"}});return B=G,N.payload.address}async function _(j){let{message:W,signerKey:N}=h$(j,await Z(!1)),V=await(await import("@trezor/connect-web")).default.solanaSignTransaction({path:J,serializedTx:HM.hex.encode(W)});if(!V.success)throw new y.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:y.Chain.Solana,error:V.payload.error}});let Y=HM.hex.decode(V.payload.signature.replace(/^0x/,""));return x$(j,{message:W,signature:Y,signerKey:N})}return{connect:async()=>({publicKey:new VM.PublicKey(await Z(!0))}),disconnect:()=>Promise.resolve(),getAddress:()=>Z(!0),get publicKey(){return B??Q},signTransaction:_}}var dM,HM,VM,y;var rM=qM(()=>{dM=require("@noble/curves/ed25519.js"),HM=require("@scure/base"),VM=require("@solana/web3.js"),y=require("@swapkit/helpers")});var aM={};a(aM,{toTrezorStellarTransaction:()=>nM,getStellarSigner:()=>o$});function d(M){return new c.SwapKitError({errorKey:"wallet_trezor_method_not_supported",info:{chain:c.Chain.Stellar,reason:M}})}function EM(M){let $=/^(\d+)(?:\.(\d{1,7}))?$/.exec(M);if(!$)throw d(`Invalid Stellar amount: ${M}`);let[,U="0",X=""]=$;return BigInt(`${U}${X.padEnd(l$,"0")}`).toString()}function oM(M){if(!/^\d+$/.test(M)||BigInt(M)>u$)throw d(`Unsupported Stellar time bound: ${M}`);return Number(M)}function iM(M){let $=p$[M.getAssetType()];if(!$||!("getCode"in M))throw d("Trezor does not support liquidity pool assets");return $==="NATIVE"?{type:$}:{code:M.getCode(),issuer:M.getIssuer(),type:$}}function d$({source:M,...$}){let U=M?{source:M}:{};switch($.type){case"payment":return{...U,amount:EM($.amount),asset:iM($.asset),destination:$.destination,type:"payment"};case"createAccount":return{...U,destination:$.destination,startingBalance:EM($.startingBalance),type:"createAccount"};case"changeTrust":return{...U,limit:EM($.limit),line:iM($.line),type:"changeTrust"};default:throw d(`Unsupported Stellar operation: ${$.type}`)}}function s$(M){if(typeof M==="string")return M;try{return new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}).decode(M??void 0)}catch{throw d("Trezor only signs UTF-8 text memos")}}function r$({type:M,value:$}){switch(M){case"none":return;case"text":return{text:s$($),type:zM.text};case"id":return{id:String($),type:zM.id};case"hash":case"return":return{hash:Buffer.from($??"").toString("hex"),type:zM[M]};default:throw d(`Unsupported Stellar memo type: ${M}`)}}function nM(M){if("innerTransaction"in M)throw d("Trezor cannot sign fee bump transactions");if(!M.timeBounds)throw d("Trezor requires transaction time bounds");let{extraSigners:$,ledgerBounds:U,minAccountSequence:X,minAccountSequenceAge:J,minAccountSequenceLedgerGap:Q}=M;if([U,X,J,Q].some((Z)=>Z!==void 0)||$?.length)throw d("Trezor cannot sign Stellar transactions with extra preconditions");return{networkPassphrase:M.networkPassphrase,transaction:{fee:Number(M.fee),memo:r$(M.memo),operations:M.operations.map(d$),sequence:M.sequence,source:M.source,timebounds:{maxTime:oM(M.timeBounds.maxTime),minTime:oM(M.timeBounds.minTime)}}}}function o$({derivationPath:M}){if(M[3]||M[4])throw new c.SwapKitError({errorKey:"wallet_trezor_derivation_path_not_supported",info:{chain:c.Chain.Stellar,derivationPath:M,reason:"Stellar only uses m/44'/148'/x'"}});let $=c.derivationPathToString(M.slice(0,3)),U="";async function X(){if(U)return U;let B=await(await import("@trezor/connect-web")).default.stellarGetAddress({path:$,showOnTrezor:!0});if(!B.success)throw new c.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:c.Chain.Stellar,derivationPath:M,error:B.payload.error}});return U=B.payload.address,U}async function J(Q){let B=nM(Q);if(B.transaction.source!==await X())throw d("Transaction source does not match the Trezor address");let _=await(await import("@trezor/connect-web")).default.stellarSignTransaction({path:$,...B});if(!_.success)throw new c.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:c.Chain.Stellar,error:_.payload.error}});try{Q.addSignature(U,Buffer.from(_.payload.signature,"hex").toString("base64"))}catch(j){throw new c.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:c.Chain.Stellar,error:j}})}return Q}return{getAddress:X,signTransaction:J}}var c,l$=7,u$=4294967295n,p$,zM;var tM=qM(()=>{c=require("@swapkit/helpers"),p$={credit_alphanum4:"ALPHANUM4",credit_alphanum12:"ALPHANUM12",native:"NATIVE"},zM={hash:3,id:2,return:4,text:1}});var q$={};a(q$,{toTrezorTronContract:()=>$$,getTronSigner:()=>$4});function BM(M){return new s.SwapKitError({errorKey:"wallet_trezor_method_not_supported",info:{chain:s.Chain.Tron,reason:M}})}function kM(M,$,U){let X=Object.keys(M).filter((J)=>!$.has(J)&&!e$.includes(M[J]));if(X.length>0)throw BM(`Trezor cannot sign Tron ${U} with ${X.join(", ")}`)}function eM(M,$){let U=M[$];if(typeof U!=="string"||!U)throw BM(`Missing ${$} in Tron contract`);return U}function M4(M){let{amount:$}=M;if(!(typeof $==="number"&&Number.isSafeInteger($)&&$>0||typeof $==="string"&&/^[1-9]\d*$/.test($)))throw BM("Invalid amount in Tron contract");return String($)}function $$(M){let[$,...U]=M.raw_data.contract;if(!$||U.length>0)throw BM("Trezor signs Tron transactions with exactly one contract");let X=$.parameter.value,J=t$[$.type];if(!J)throw BM(`Unsupported Tron contract type: ${$.type}`);kM(M.raw_data,n$,"transactions"),kM($,a$,"contracts"),kM(X,J,$.type);let Q=(Z)=>{let _=eM(X,Z);if(M.visible!==!1)return M$.tronAddressToHex(_);if(i$.test(_))return _.toLowerCase();throw BM(`Invalid hex ${Z} in Tron contract`)},B=Q("owner_address");if($.type==="TransferContract")return{parameter:{value:{amount:M4(X),owner_address:B,to_address:Q("to_address")}},type:"TransferContract"};return{parameter:{value:{contract_address:Q("contract_address"),data:eM(X,"data"),owner_address:B}},type:"TriggerSmartContract"}}function $4({address:M,derivationPath:$}){let U=s.derivationPathToString($),X=M??"";return{getAddress:async()=>{if(X)return X;let Q=await(await import("@trezor/connect-web")).default.tronGetAddress({path:U,showOnTrezor:!0});if(!Q.success)throw new s.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:s.Chain.Tron,derivationPath:$,error:Q.payload.error}});return X=Q.payload.address,X},signTransaction:async(J)=>{let Q=$$(J),B=(await import("@trezor/connect-web")).default,{data:Z,expiration:_,fee_limit:j,ref_block_bytes:W,ref_block_hash:N,timestamp:G}=J.raw_data,V=await B.tronSignTransaction({contract:[Q],data:Z,expiration:_,fee_limit:j,path:U,ref_block_bytes:W,ref_block_hash:N,timestamp:G});if(!V.success)throw new s.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:s.Chain.Tron,error:V.payload.error}});return{...J,signature:[V.payload.signature.replace(/^0x/,"")]}}}}var s,M$,i$,n$,a$,t$,e$;var U$=qM(()=>{s=require("@swapkit/helpers"),M$=require("@swapkit/toolboxes/tron"),i$=/^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"]),t$={TransferContract:new Set(["amount","owner_address","to_address"]),TriggerSmartContract:new Set(["contract_address","data","owner_address"])},e$=[void 0,null,0,"",!1]});var H4={};a(H4,{trezorWallet:()=>G$,normalizeTrezorSignature:()=>W$,normalizeTrezorExtendedPublicKey:()=>fM,getTrezorExtendedPublicKey:()=>L$,TREZOR_SUPPORTED_CHAINS:()=>A4});module.exports=S$(H4);var MM=require("@scure/base"),LM=require("@scure/bip32"),q=require("@swapkit/helpers"),k=require("@swapkit/toolboxes/utxo"),GM=require("@swapkit/wallet-core");async function bM({chain:M,indexes:$,publicKey:U,tx:X}){let{getMissingSpendingMetadata:J,getNetworkForChain:Q}=await import("@swapkit/toolboxes/utxo");for(let{index:B,...Z}of J({chain:M,indexes:$,network:Q(M),publicKey:U,tx:X}))X.updateInput(B,Z)}var q4=new Set(["auto","iframe","popup","suite-desktop","suite-web"]),U4=new Set(["BridgeTransport","WebUsbTransport","NodeUsbTransport"]),Q$="auto",NM={appName:"SwapKit",appUrl:"https://swapkit.dev",email:"support@swapkit.dev"},Z$=["WebUsbTransport"],jM={keepSession:!0},X4=65,YM=new Map,$M,B4=[q.Chain.Bitcoin,q.Chain.BitcoinCash,q.Chain.Dash,q.Chain.Dogecoin,q.Chain.Litecoin].map((M)=>k.getNetworkForChain(M).bip32);async function J4(){YM.clear();let M=(async()=>{try{await(await import("@trezor/connect-web")).default.dispose()}catch{}})();if($M=M,await M,$M===M)$M=void 0}function _$(M){return typeof M==="string"&&q4.has(M)?M:void 0}function j$(M){if(!Array.isArray(M))return;let $=M.filter((U)=>typeof U==="string"&&U4.has(U));return $.length>0?$:void 0}function QM(M,$){return typeof M==="string"&&M.trim()?M:$}function N$(){return typeof globalThis.location<"u"&&globalThis.location.origin?globalThis.location.origin:NM.appUrl}async function Q4(){let M=(await import("@trezor/connect-web")).default,$=q.SKConfig.get("integrations").trezor,{connectSrc:U,coreMode:X,debug:J,interactionTimeout:Q,lazyLoad:B,pendingTransportEvent:Z,popup:_,transportReconnect:j,transports:W,...N}=$??{},G={...N,appName:QM($?.appName,NM.appName),appUrl:QM($?.appUrl,N$()),email:QM($?.email,NM.email)},V=typeof globalThis.location<"u"&&["localhost","127.0.0.1"].includes(globalThis.location.hostname),Y=_$(X)??Q$,O=j$(W)??Z$;if($M)await $M;if(V)await M.dispose();return await M.init({connectSrc:U,coreMode:Y,debug:J,interactionTimeout:Q,lazyLoad:B??!1,manifest:G,pendingTransportEvent:Z,popup:_??!0,transportReconnect:j,transports:O}),{coreMode:Y,isLocalhost:V,popup:_??!0,TrezorConnect:M}}function fM(M,$){let U=k.getNetworkForChain($).bip32,X=[U,...B4.filter((Q)=>Q.public!==U.public||Q.private!==U.private)],J;for(let Q of X)try{let B=LM.HDKey.fromExtendedKey(M,Q);if(!(B.publicKey&&B.chainCode))throw Error("Extended key is missing public key data");return new LM.HDKey({chainCode:B.chainCode,depth:B.depth,index:B.index,parentFingerprint:B.parentFingerprint,publicKey:B.publicKey,versions:U}).publicExtendedKey}catch(B){J=B}throw J instanceof Error?J:Error("Unable to parse Trezor extended public key")}function Y$(M,$){if(!M)return;try{return fM(M,$)}catch{return M}}async function V$(M){let{Script:$}=await import("@swapkit/utxo-signer");try{let[U,X]=$.decode(M),J=X===0?new Uint8Array:X;if(U!=="RETURN"||!(J instanceof Uint8Array))return null;return MM.hex.encode($.encode(["RETURN",J]))===MM.hex.encode(M)?MM.hex.encode(J):null}catch{return null}}async function mM(M,$,U){if($!==0n)throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:U,error:"OP_RETURN output carrying value cannot be signed"}});let X=await V$(M);if(X===null)throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:U,error:"Malformed OP_RETURN output cannot be signed"}});return{amount:"0",op_return_data:X,script_type:"PAYTOOPRETURN"}}async function X$(M,$,U){if(!$)return;let X=MM.hex.encode(new TextEncoder().encode($));for(let J=0;J<M.outputsLength;J++){let Q=M.getOutput(J).script;if(Q?.[0]===106&&await V$(Q)===X)return}throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:U,error:"Transaction does not carry the provided memo"}})}function Z4(M,$){switch($[0]){case 86:return M===q.Chain.Bitcoin?{input:"SPENDTAPROOT",output:"PAYTOTAPROOT",utxo:q.UTXOScriptType.P2TR}:null;case 84:return{input:"SPENDWITNESS",output:"PAYTOWITNESS",utxo:q.UTXOScriptType.P2WPKH};case 49:return{input:"SPENDP2SHWITNESS",output:"PAYTOP2SHWITNESS",utxo:q.UTXOScriptType.P2SH_P2WPKH};case 44:return{input:"SPENDADDRESS",output:"PAYTOADDRESS",utxo:q.UTXOScriptType.P2PKH};default:return null}}function JM(M){return M.map(($,U)=>U<3?($|2147483648)>>>0:$)}function _4(M){return Array.isArray(M)&&M[0]instanceof Uint8Array&&typeof M[1]==="object"&&M[1]!==null&&typeof M[1].fingerprint==="number"&&Array.isArray(M[1].path)}function j4(M){if(!Array.isArray(M.bip32Derivation))return;let[$]=M.bip32Derivation;return _4($)?$:void 0}function N4(M){if(!(Array.isArray(M)&&M[0]instanceof Uint8Array))return!1;let $=M[1];return Array.isArray($?.hashes)&&Array.isArray($?.der?.path)}function Y4(M,$){let U=Array.isArray(M.tapBip32Derivation)?M.tapBip32Derivation:[];if(U.length===0)return;let{tapInternalKey:X}=M,J=U.filter((Z)=>N4(Z)&&Z[1].hashes.length===0&&(!X||MM.hex.encode(Z[0])===MM.hex.encode(X))),[Q,B]=J[0]??[];if(J.length!==1||!(Q&&B))throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:q.Chain.Bitcoin,error:`Input ${$} has no single taproot key-path origin to sign with`}});return{path:B.der.path,xOnlyKey:Q}}function B$(M){if(M.witnessUtxo?.amount!==void 0)return M.witnessUtxo.amount.toString();let $=M.index!==void 0?M.nonWitnessUtxo?.outputs?.[M.index]:void 0;if($?.amount!==void 0)return $.amount.toString();return}function W$(M,$){let U=Buffer.from(M,"hex"),X=U[1]!==void 0?U[1]+2:void 0;if(X!==void 0&&U.length===X)return new Uint8Array([...U,$===q.Chain.BitcoinCash?X4:1]);return new Uint8Array(U)}function V4(M,$,U){let X=[];for(let J=0;J<M.inputsLength;J++){let Q=M.getInput(J);X.push({address_n:$,amount:Q.value.toString(),prev_hash:U.encode(Q.txid),prev_index:Q.index,script_type:"SPENDADDRESS"})}return X}async function W4(M,$,U,X){let J=[];for(let Q=0;Q<M.outputsLength;Q++){let B=M.getOutput(Q),Z=B.scriptPubkey;if(Z?.[0]===106){J.push(await mM(Z,B.value,X));continue}let _=await L4(Z);if(!_&&B.value>0n)throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:X,error:"Unable to decode output address from scriptPubkey"}});if(_===U)J.push({address_n:$,amount:B.value.toString(),script_type:"PAYTOADDRESS"});else J.push({address:_,amount:B.value.toString(),script_type:"PAYTOADDRESS"})}return J}async function L4(M){try{let{OutScript:$,Address:U,NETWORKS:X}=await import("@swapkit/utxo-signer"),J=$.decode(M);if(J.type==="pkh"||J.type==="pk")return U(X.zcash).encode(J)}catch{}return}async function G4(M,$){let{ZcashTransaction:U,Script:X}=await import("@swapkit/utxo-signer"),J=U.fromHex(M,{allowUnknownOutputs:!0}),Q=$.clone();for(let B=0;B<J.inputsLength;B++){let _=J.getInput(B).script;if(_&&_.length>0){let j=X.decode(_);if(j.length>=2)Q.addSignature(B,j[1],j[0])}}return Q}function f4(M,$,U,X){let J=[];for(let Q=0;Q<M.inputsLength;Q++){let B=M.getInput(Q),Z=$[Q];J.push({address_n:U,amount:Z?.value?.toString()||B.value?.toString()||"0",prev_hash:B.txid?X.encode(B.txid):"",prev_index:B.index??0,script_type:"SPENDADDRESS"})}return J}async function O4({addressN:M,chain:$,myAddress:U,network:X,tx:J}){let Q=[];for(let B=0;B<J.outputsLength;B++){let Z=J.getOutput(B),_=J.getOutputAddress(B,X),j=Z.script;if(j?.[0]===106){Q.push(await mM(j,Z.amount,$));continue}if(!_&&(Z.amount??0n)>0n)throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:$,error:"Unable to decode output address"}});let N=_===U||!_?{address_n:M}:{address:_};Q.push({...N,amount:Z.amount?.toString()||"0",script_type:"PAYTOADDRESS"})}return Q}async function WM(M,$,U,X,J,Q,B,Z){let _=[];for(let j=0;j<M.outputsLength;j++){let W=M.getOutput(j),N=M.getOutputAddress(j,$);if(W.script?.[0]===106){_.push(await mM(W.script,W.amount,J));continue}if(!N)throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:J,error:"Unable to decode output address from scriptPubkey"}});if(W.amount===void 0)throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:J,error:"Output amount is missing"}});let G=J===q.Chain.BitcoinCash,V=G?B(N):N,Y=G?Z(V)===Z(X):V===X;_.push(Y?{address_n:U,amount:W.amount.toString(),script_type:Q.output}:{address:V,amount:W.amount.toString(),script_type:"PAYTOADDRESS"})}return _}function SM(M){return M===q.Chain.Bitcoin||M===q.Chain.Litecoin}function R4(M){return M===q.Chain.BitcoinCash||M===q.Chain.Dash||M===q.Chain.Dogecoin}function J$(M,$){if(M!==q.Chain.Dash)return;let U=new Map;for(let X of $){if(!X.txHex)throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:M,error:`Missing previous transaction hex for ${X.hash}:${X.index}`}});U.set(X.hash,{details:{},hex:X.txHex,txid:X.hash})}return[...U.values()]}async function D4({address:M,chain:$,derivationPath:U}){switch($){case q.Chain.Arbitrum:case q.Chain.Arc:case q.Chain.Aurora:case q.Chain.Avalanche:case q.Chain.Base:case q.Chain.Berachain:case q.Chain.BinanceSmartChain:case q.Chain.Ethereum:case q.Chain.Gnosis:case q.Chain.Hyperevm:case q.Chain.Monad:case q.Chain.Optimism:case q.Chain.Polygon:case q.Chain.Robinhood:case q.Chain.XLayer:{let{getProvider:X,getEvmToolboxAsync:J}=await import("@swapkit/toolboxes/evm"),{getEVMSigner:Q}=await Promise.resolve().then(() => (PM(),gM)),B=await X($),Z=await Q({chain:$,derivationPath:U,provider:B}),_=await Z.getAddress();return{...await J($,{provider:B,signer:Z}),address:_}}case q.Chain.Cardano:{let{getCardanoToolbox:X}=await import("@swapkit/toolboxes/cardano"),{getCardanoSigner:J}=await Promise.resolve().then(() => (cM(),xM)),Q=await import("@trezor/connect-web"),B=await J({connect:Q,derivationPath:U}),Z=B.getAddress();return{...X({signer:B}),address:Z}}case q.Chain.Ripple:{let{getRippleToolbox:X}=await import("@swapkit/toolboxes/ripple"),{getRippleSigner:J}=await Promise.resolve().then(() => (pM(),uM)),Q=J({derivationPath:U}),B=M??await Q.getAddress();return{...X({signer:Q}),address:B}}case q.Chain.Solana:{let{getSolanaToolbox:X}=await import("@swapkit/toolboxes/solana"),{getSolanaSigner:J}=await Promise.resolve().then(() => (rM(),sM)),Q=J({address:M,derivationPath:U}),B=M??await Q.getAddress();return{...X({signer:Q}),address:B}}case q.Chain.Stellar:{let{getStellarToolbox:X}=await import("@swapkit/toolboxes/stellar"),{getStellarSigner:J}=await Promise.resolve().then(() => (tM(),aM)),Q=J({derivationPath:U}),B=M??await Q.getAddress();return{...X({signer:Q}),address:B}}case q.Chain.Tron:{let{getTronToolbox:X}=await import("@swapkit/toolboxes/tron"),{getTronSigner:J}=await Promise.resolve().then(() => (U$(),q$)),Q=J({address:M,derivationPath:U}),B=await Q.getAddress();return{...X({signer:Q}),address:B}}case q.Chain.Zcash:{let{getUtxoToolbox:X}=await import("@swapkit/toolboxes/utxo"),J=q.derivationPathToString(U),B=M??await(async()=>{let Y=(await import("@trezor/connect-web")).default,{success:O,payload:F}=await Y.getAddress({coin:"zcash",path:J});if(!O)throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:$,error:F.error||"Unknown error"}});return F.address})(),Z=async(Y)=>{let O=(await import("@trezor/connect-web")).default,{hex:F}=await import("@scure/base"),b=JM(U),w=Y.getGlobal(),x=V4(Y,b,F),P=await W4(Y,b,B,$),v=await O.signTransaction({branchId:w.consensusBranchId,coin:"zcash",expiry:w.expiryHeight,inputs:x,locktime:w.lockTime,outputs:P,overwintered:!0,version:w.txVersion,versionGroupId:w.versionGroupId});if(!v.success)throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:$,error:v.payload.error}});return{serializedTx:v.payload.serializedTx,signedPczt:await G4(v.payload.serializedTx,Y)}},_=async(Y)=>{let{ZcashTransaction:O}=await import("@swapkit/utxo-signer");return O.fromHex(Y,{allowUnknownOutputs:!0})},j=async(Y)=>{let O=(await import("@trezor/connect-web")).default,{hex:F}=await import("@scure/base"),{NETWORKS:b,ZcashVersionGroupId:w}=await import("@swapkit/utxo-signer"),x=JM(U),P=f4(Y,[],x,F),v=await O4({addressN:x,chain:$,myAddress:B,network:b.zcash,tx:Y}),i=await O.signTransaction({branchId:Y.consensusBranchId,coin:"zcash",expiry:0,inputs:P,locktime:0,outputs:v,overwintered:!0,version:4,versionGroupId:w.SAPLING});if(i.success)return{serializedTx:i.payload.serializedTx,signedTx:await _(i.payload.serializedTx)};throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:$,error:i.payload.error}})},W={getAddress:async()=>B,signPCZT:async(Y)=>{return(await Z(Y)).signedPczt},signTransaction:async(Y)=>{if("toPCZT"in Y){let{serializedTx:O}=await Z(Y.toPCZT());return _(O)}if("getGlobal"in Y){let{serializedTx:O}=await Z(Y);return _(O)}return(await j(Y)).signedTx}},N=X(q.Chain.Zcash,{signer:W}),G=async(Y)=>{if("toPCZT"in Y){let{serializedTx:F}=await Z(Y.toPCZT());return N.broadcastTx(F)}if("getGlobal"in Y){let{serializedTx:F}=await Z(Y);return N.broadcastTx(F)}let{serializedTx:O}=await j(Y);return N.broadcastTx(O)},V=async({recipient:Y,feeOptionKey:O,feeRate:F,...b})=>{if(!(B&&Y))throw new q.SwapKitError({errorKey:"wallet_missing_params",info:{address:B,recipient:Y,wallet:q.WalletOption.TREZOR}});let w=F||(await N.getFeeRates())[O||q.FeeOption.Fast],{tx:x}=await N.createTransaction({...b,feeRate:w,fetchTxHex:!1,recipient:Y,sender:B}),{serializedTx:P}=await j(x);return N.broadcastTx(P)};return{...N,address:B,signAndBroadcastTransaction:G,signPCZT:W.signPCZT,transfer:V}}case q.Chain.Bitcoin:case q.Chain.BitcoinCash:case q.Chain.Dash:case q.Chain.Dogecoin:case q.Chain.Litecoin:{let f$=function(L={}){return DM(L)},{toCashAddress:X,getUtxoToolbox:J,stripPrefix:Q}=await import("@swapkit/toolboxes/utxo"),B=$,Z=Z4($,U);if(!Z)throw new q.SwapKitError({errorKey:"wallet_trezor_derivation_path_not_supported",info:{derivationPath:U}});let _=Z,j=Z.utxo===q.UTXOScriptType.P2TR,W={scriptType:Z.utxo},N=$.toLowerCase(),V=M??await(async(L=U)=>{let S=(await import("@trezor/connect-web")).default,z=q.derivationPathToString(L),{success:D,payload:E}=await S.getAddress({coin:N,...jM,path:z,showOnTrezor:!1});if(!D)throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:$,error:E.error||"Unknown error"}});if($===q.Chain.BitcoinCash)return Q(E.address);return E.address})(),Y=J($,W),O=async(L,S,z="")=>{await X$(L,z,$);let D=(await import("@trezor/connect-web")).default,E=JM(U),A=k.getNetworkForChain($),C=await WM(L,A,E,V,$,_,X,Q),I=S.map(({hash:T,index:K,value:f})=>({address_n:E,amount:f,prev_hash:T,prev_index:K,script_type:_.input})),R=await D.signTransaction({coin:N,inputs:I,outputs:C,refTxs:J$($,S)});if(R.success)return R.payload.serializedTx;let m=R.payload;throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:$,code:m?.code??"unknown",error:m?.error??"unknown",payload:m}})},F=async(L)=>{let S=(await import("@trezor/connect-web")).default,{hex:z}=await import("@scure/base"),D=JM(U),E=k.getNetworkForChain($),A;async function C(){if(!A){let f=await DM(),h=LM.HDKey.fromExtendedKey(f.xpub,E.bip32).derive(`m/${Number(U[3]??0)}/${Number(U[4]??0)}`);if(!h.publicKey)throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_get_public_key",info:{chain:$,error:"Unable to derive Trezor leaf public key from account xpub"}});A=h.publicKey}return[A,{fingerprint:0,path:D}]}let I=[],R=[];async function m(f,H){if(j){let ZM=Y4(H,f);if(!ZM){let[D$,{path:wM}]=await C();ZM={path:wM,xOnlyKey:D$.slice(1)},L.updateInput(f,{tapBip32Derivation:[[ZM.xOnlyKey,{der:{fingerprint:0,path:wM},hashes:[]}]]})}if(!H.tapInternalKey)L.updateInput(f,{tapInternalKey:ZM.xOnlyKey});return ZM.path}let h=j4(H),n=h??await C();if(I[f]=n[0],!h)L.updateInput(f,{bip32Derivation:[n]});return await bM({chain:B,indexes:[f],publicKey:n[0],tx:L}),n[1].path}for(let f=0;f<L.inputsLength;f++){let H=L.getInput(f),h=B$(H);if(!H.txid||H.index===void 0||!h)throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:$,error:`Input ${f} is missing prevout data required by Trezor`}});let n=await m(f,H);R.push({address_n:n,amount:h,prev_hash:z.encode(H.txid),prev_index:H.index,script_type:_.input,...H.sequence!==void 0?{sequence:H.sequence}:{}})}let T=await WM(L,E,D,V,$,_,X,Q),K=await S.signTransaction({coin:N,...jM,inputs:R,locktime:L.lockTime,outputs:T,version:L.version});if(!K.success){let f=K.payload;throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:$,code:f?.code??"unknown",error:f?.error??"unknown",payload:f}})}return K.payload.signatures.forEach((f,H)=>{if(!f)return;if(j){L.updateInput(H,{tapKeySig:z.decode(f)});return}let h=I[H];if(!h)return;L.updateInput(H,{partialSig:[[h,W$(f,$)]]})}),L},b=async(L)=>{let S=(await import("@trezor/connect-web")).default,{hex:z}=await import("@scure/base"),D=JM(U),E=k.getNetworkForChain($),A=[];for(let m=0;m<L.inputsLength;m++){let T=L.getInput(m),K=B$(T);if(!T.txid||T.index===void 0||!K)throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:$,error:`Input ${m} is missing prevout data required by Trezor`}});A.push({address_n:D,amount:K,prev_hash:z.encode(T.txid),prev_index:T.index,script_type:_.input,...T.sequence!==void 0?{sequence:T.sequence}:{}})}let C=await WM(L,E,D,V,$,_,X,Q),I=await S.signTransaction({coin:N,inputs:A,locktime:L.lockTime,outputs:C,version:L.version});if(I.success)return I.payload.serializedTx;let R=I.payload;throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:$,code:R?.code??"unknown",error:R?.error??"unknown",payload:R}})},w=async(L,S,z="")=>{await X$(L,z,$);let D=(await import("@trezor/connect-web")).default,E=k.getNetworkForChain($),A=JM(U.slice(0,3)),C=await WM(L,E,A,V,$,_,X,Q),I=S.map(({hash:m,index:T,value:K,derivationIndex:f,isChange:H})=>{let h=H?1:0;return{address_n:[...A,h,f],amount:K,prev_hash:m,prev_index:T,script_type:_.input}}),R=await D.signTransaction({coin:N,inputs:I,outputs:C,refTxs:J$($,S)});if(R.success)return R.payload.serializedTx;throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:$,error:R.payload.error}})},x=async({utxos:L,recipient:S,assetValue:z,memo:D,feeRate:E,feeOptionKey:A})=>{let C=J($,W),I=E||(await C.getFeeRates())[A||q.FeeOption.Fast],{tx:R,inputs:m}=await C.createTransaction({assetValue:z,feeRate:I,fetchTxHex:$===q.Chain.Dash,memo:D,recipient:S,sender:V}),T=m.map((f)=>{let H=L.find((h)=>h.hash===f.hash&&h.index===f.index);return{...f,derivationIndex:H?.derivationIndex??0,isChange:H?.isChange??!1,txHex:H?.txHex}}),K=await w(R,T,D);return C.broadcastTx(K)},P=async({recipient:L,feeOptionKey:S,feeRate:z,memo:D,...E})=>{if(!(V&&L))throw new q.SwapKitError({errorKey:"wallet_missing_params",info:{address:V,memo:D,recipient:L,wallet:q.WalletOption.TREZOR}});let A=J($,W),C=z||(await A.getFeeRates())[S||q.FeeOption.Fast],I=A.createTransaction,{tx:R,inputs:m}=await I({...E,feeRate:C,fetchTxHex:$===q.Chain.Dash,memo:D,recipient:L,sender:V}),T=await O(R,m,D);return await A.broadcastTx(T)},v=SM($)?await J(B,{...W,signer:{getAddress:async()=>V,signTransaction:F}}):Y,i=R4($)?async(L)=>Y.broadcastTx(await b(L)):v.signAndBroadcastTransaction,OM=SM($)?v.signTransaction:O,RM=SM($)?v.transfer:P;async function DM({accountIndex:L}={}){let S=(await import("@trezor/connect-web")).default,z=k.getUTXOAccountPath({accountIndex:L,chain:B,derivationPath:U}),D=q.derivationPathToString(z),E=`${$}:${D}`,A=YM.get(E);if(A)return A;let C=await S.getPublicKey({coin:N,path:D}),{success:I,payload:R}=C;if(!I)throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_get_public_key",info:{chain:$,error:R.error||"Unknown error"}});let m=fM(R.xpub,B),T=Y$(R.xpubSegwit,B),K={accountIndex:k.getUTXOAccountIndexFromPath(z),chainCode:R.chainCode,depth:R.depth,fingerprint:R.fingerprint,path:R.serializedPath,publicKey:R.publicKey,xpub:m,xpubSegwit:T};return YM.set(E,K),K}async function FM({accountIndex:L,index:S,change:z=!1}){k.assertDerivationIndex("index",S);let D=(await import("@trezor/connect-web")).default,E=k.getUTXOAccountPath({accountIndex:L,chain:B,derivationPath:U}),A=`${q.derivationPathToString(E)}/${Number(z)}/${S}`,{success:C,payload:I}=await D.getAddress({coin:N,...jM,path:A,showOnTrezor:!1});if(!C)return;let R=I.address;if($===q.Chain.BitcoinCash)R=(await J($)).stripPrefix(I.address);let m=await D.getPublicKey({coin:N,...jM,path:A,scriptType:_.input,showOnTrezor:!1}),T=m.success?m.payload.publicKey:"";return{accountIndex:k.getUTXOAccountIndexFromPath(E),address:R,change:z,index:S,path:A,pubkey:T}}async function O$({accountIndex:L,count:S,startIndex:z=0,change:D=!1}){k.assertDerivationIndex("count",S),k.assertDerivationIndex("startIndex",z);let E=(await import("@trezor/connect-web")).default,A=k.getUTXOAccountPath({accountIndex:L,chain:B,derivationPath:U}),C=q.derivationPathToString(A),I=Array.from({length:S},(K,f)=>({coin:N,path:`${C}/${Number(D)}/${z+f}`,showOnTrezor:!1})),{success:R,payload:m}=await E.getAddress({...jM,bundle:I});if(!R||!Array.isArray(m))return[];return await Promise.all(m.map(async(K,f)=>{let H=K.address;if($===q.Chain.BitcoinCash)H=(await J($)).stripPrefix(K.address);return{accountIndex:k.getUTXOAccountIndexFromPath(A),address:H,change:D,index:z+f,path:`${C}/${Number(D)}/${z+f}`,pubkey:""}}))}let R$=k.createHDWalletHelpers({chain:$,deriveAddress:FM,getBalance:v.getBalance,getUtxos:(L)=>k.getUtxoApi($).getUtxos({address:L,fetchTxHex:!0})});return{...v,...R$,address:V,deriveAddressAtIndex:FM,deriveAddresses:O$,getExtendedPublicKey:f$,getExtendedPublicKeyInfo:DM,signAndBroadcastTransaction:i,signTransaction:OM,signTransactionWithMultipleInputs:w,transfer:RM,transferFromMultipleAddresses:x}}default:throw new q.SwapKitError({errorKey:"wallet_chain_not_supported",info:{chain:$,wallet:q.WalletOption.TREZOR}})}}async function L$(M,$,{accountIndex:U}={}){if(![q.Chain.BitcoinCash,q.Chain.Bitcoin,q.Chain.Dash,q.Chain.Dogecoin,q.Chain.Litecoin,q.Chain.Zcash].includes(M))throw new q.SwapKitError({errorKey:"wallet_chain_not_supported",info:{chain:M,wallet:q.WalletOption.TREZOR}});let{TrezorConnect:X}=await Q4(),J=M,Q=$??q.NetworkDerivationPath[M],B=M===q.Chain.Zcash?"zcash":M.toLowerCase(),Z=k.getUTXOAccountPath({accountIndex:U,chain:J,derivationPath:Q}),_=q.derivationPathToString(Z),j=`${M}:${_}`,W=YM.get(j);if(W)return W;let{success:N,payload:G}=await X.getPublicKey({coin:B,path:_,showOnTrezor:!0});if(!N)throw new q.SwapKitError({errorKey:"wallet_trezor_failed_to_get_public_key",info:{chain:M,error:G.error||"Unknown error"}});let V={accountIndex:k.getUTXOAccountIndexFromPath(Z),chainCode:G.chainCode,depth:G.depth,fingerprint:G.fingerprint,path:G.serializedPath,publicKey:G.publicKey,xpub:fM(G.xpub,J),xpubSegwit:Y$(G.xpubSegwit,J)};return YM.set(j,V),V}var G$=GM.createWallet({connect:({addChain:M,supportedChains:$,walletType:U})=>async function(J,Q,{address:B}={}){let[Z]=q.filterSupportedChains({chains:J,supportedChains:$,walletType:U});if(!Z)throw new q.SwapKitError({errorKey:"wallet_chain_not_supported",info:{chain:Z,wallet:q.WalletOption.TREZOR}});let _=(await import("@trezor/connect-web")).default,j=q.SKConfig.get("integrations").trezor,{connectSrc:W,coreMode:N,debug:G,interactionTimeout:V,lazyLoad:Y,pendingTransportEvent:O,popup:F,transportReconnect:b,transports:w,...x}=j??{},P={...x,appName:QM(j?.appName,NM.appName),appUrl:QM(j?.appUrl,N$()),email:QM(j?.email,NM.email)},v=typeof globalThis.location<"u"&&["localhost","127.0.0.1"].includes(globalThis.location.hostname),i=_$(N)??Q$,OM=j$(w)??Z$;if($M)await $M;if(v)await _.dispose();await _.init({connectSrc:W,coreMode:i,debug:G,interactionTimeout:V,lazyLoad:Y??!1,manifest:P,pendingTransportEvent:O,popup:F??!0,transportReconnect:b,transports:OM});let RM=await D4({address:B,chain:Z,derivationPath:Q});return M({...RM,chain:Z,disconnect:J4,walletType:U}),!0},directSigningSupport:{[q.Chain.Arbitrum]:!0,[q.Chain.Arc]:!0,[q.Chain.Aurora]:!0,[q.Chain.Avalanche]:!0,[q.Chain.Base]:!0,[q.Chain.Berachain]:!0,[q.Chain.BinanceSmartChain]:!0,[q.Chain.Bitcoin]:!0,[q.Chain.BitcoinCash]:!0,[q.Chain.Cardano]:!0,[q.Chain.Dash]:!0,[q.Chain.Ethereum]:!0,[q.Chain.Gnosis]:!0,[q.Chain.Dogecoin]:!0,[q.Chain.Hyperevm]:!0,[q.Chain.Litecoin]:!0,[q.Chain.Monad]:!0,[q.Chain.Optimism]:!0,[q.Chain.Polygon]:!0,[q.Chain.Ripple]:!0,[q.Chain.Robinhood]:!0,[q.Chain.Solana]:!0,[q.Chain.Stellar]:!0,[q.Chain.Tron]:!0,[q.Chain.XLayer]:!0,[q.Chain.Zcash]:!0},getExtendedPublicKey:L$,name:"connectTrezor",supportedChains:[q.Chain.Arbitrum,q.Chain.Arc,q.Chain.Aurora,q.Chain.Avalanche,q.Chain.Base,q.Chain.Berachain,q.Chain.BinanceSmartChain,q.Chain.Bitcoin,q.Chain.BitcoinCash,q.Chain.Cardano,q.Chain.Dash,q.Chain.Dogecoin,q.Chain.Ethereum,q.Chain.Gnosis,q.Chain.Hyperevm,q.Chain.Litecoin,q.Chain.Monad,q.Chain.Optimism,q.Chain.Polygon,q.Chain.Ripple,q.Chain.Robinhood,q.Chain.Solana,q.Chain.Stellar,q.Chain.Tron,q.Chain.XLayer,q.Chain.Zcash],walletType:q.WalletOption.TREZOR}),A4=GM.getWalletSupportedChains(G$);
|
|
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
|