@swapkit/wallet-hardware 4.6.3 → 4.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-1jpcb30j.js → chunk-25q3rr1d.js} +3 -3
- package/dist/{chunk-1jpcb30j.js.map → chunk-25q3rr1d.js.map} +1 -1
- package/dist/{chunk-1jexf7qt.js → chunk-7fsaymh4.js} +3 -3
- package/dist/{chunk-1jexf7qt.js.map → chunk-7fsaymh4.js.map} +1 -1
- package/dist/{chunk-skvfn1dg.js → chunk-e5bb5ftj.js} +3 -3
- package/dist/{chunk-skvfn1dg.js.map → chunk-e5bb5ftj.js.map} +1 -1
- package/dist/{chunk-ybje7f3s.js → chunk-w5xy6rdj.js} +3 -3
- package/dist/{chunk-ybje7f3s.js.map → chunk-w5xy6rdj.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 +3 -3
- package/dist/ledger/index.cjs.map +3 -3
- package/dist/ledger/index.js +3 -3
- package/dist/ledger/index.js.map +3 -3
- package/dist/trezor/index.cjs +2 -2
- package/dist/trezor/index.cjs.map +3 -3
- package/dist/trezor/index.js +2 -2
- package/dist/trezor/index.js.map +3 -3
- package/dist/types/keepkey/index.d.ts +2 -1
- package/dist/types/keepkey/index.d.ts.map +1 -1
- package/dist/types/ledger/index.d.ts +2 -1
- package/dist/types/ledger/index.d.ts.map +1 -1
- package/dist/types/trezor/index.d.ts +2 -1
- package/dist/types/trezor/index.d.ts.map +1 -1
- package/package.json +5 -4
- package/dist/chunk-4fapcrj9.js +0 -5
- package/dist/chunk-4fapcrj9.js.map +0 -10
- package/dist/chunk-jj2v7mke.js +0 -4
- package/dist/chunk-jj2v7mke.js.map +0 -10
- package/dist/types/core.d.ts +0 -18
- package/dist/types/core.d.ts.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var d=((a)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(a,{get:(b,c)=>(typeof require<"u"?require:b)[c]}):a)(function(a){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+a+'" is not supported')});
|
|
2
|
-
export{d as
|
|
2
|
+
export{d as c};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
5
|
-
//# sourceMappingURL=chunk-
|
|
4
|
+
//# debugId=EE38492480DB810064756E2164756E21
|
|
5
|
+
//# sourceMappingURL=chunk-25q3rr1d.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import{SwapKitError as I}from"@swapkit/helpers";var M=2147483648,U;((j)=>{j.BTC="Bitcoin";j.BCH="BitcoinCash";j.DOGE="Dogecoin";j.LTC="Litecoin";j.DASH="Dash";j.XRP="Ripple"})(U||={});function V(B){if(B==="m/")return!0;return/^m(((\/[0-9]+h)+|(\/[0-9]+H)+|(\/[0-9]+')*)((\/[0-9]+)*))$/.test(B)}function X(B){let q=B;if(!V(q))throw new I("wallet_keepkey_invalid_params",{reason:`Not a bip32 path: '${q}'`});if(/^m\//i.test(q))q=q.slice(2);let z=q.split("/");if(z.length===1&&z[0]==="")return[];let F=Array(z.length);for(let v=0;v<z.length;v++){let J=z[v];if(J){let j=/(\d+)([hH']?)/.exec(J);if(j===null)throw new I("wallet_keepkey_invalid_params",{reason:"Invalid input"});let[,Q="",G=""]=j;if(F[v]=Number.parseInt(Q,10),F[v]>=M)throw new I("wallet_keepkey_invalid_params",{reason:"Invalid child index"});if(G==="h"||G==="H"||G==="'")F[v]+=M;else if(G.length>0)throw new I("wallet_keepkey_invalid_params",{reason:"Invalid modifier"})}}return F}
|
|
2
|
-
export{U as
|
|
2
|
+
export{U as a,X as b};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
5
|
-
//# sourceMappingURL=chunk-
|
|
4
|
+
//# debugId=21044284CC8847F864756E2164756E21
|
|
5
|
+
//# sourceMappingURL=chunk-7fsaymh4.js.map
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"/*\n KeepKey Specific bip32 path conventions\n*/\n\nimport { SwapKitError } from \"@swapkit/helpers\";\n\nconst HARDENED = 0x80000000;\n\nexport enum ChainToKeepKeyName {\n BTC = \"Bitcoin\",\n BCH = \"BitcoinCash\",\n DOGE = \"Dogecoin\",\n LTC = \"Litecoin\",\n DASH = \"Dash\",\n XRP = \"Ripple\",\n}\n\nexport function addressNListToBIP32(address: number[]) {\n return `m/${address.map((num) => (num >= HARDENED ? `${num - HARDENED}'` : num)).join(\"/\")}`;\n}\n\nexport function bip32Like(path: string) {\n if (path === \"m/\") return true;\n\n return /^m(((\\/[0-9]+h)+|(\\/[0-9]+H)+|(\\/[0-9]+')*)((\\/[0-9]+)*))$/.test(path);\n}\n\nexport function bip32ToAddressNList(initPath: string): number[] {\n let path = initPath;\n\n if (!bip32Like(path)) {\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: `Not a bip32 path: '${path}'` });\n }\n\n if (/^m\\//i.test(path)) {\n path = path.slice(2);\n }\n const segments = path.split(\"/\");\n\n if (segments.length === 1 && segments[0] === \"\") return [];\n\n const ret = new Array(segments.length);\n\n for (let i = 0; i < segments.length; i++) {\n // TODO: Check for better way instead of exec\n const segment = segments[i];\n if (segment) {\n const tmp = /(\\d+)([hH']?)/.exec(segment);\n if (tmp === null) throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Invalid input\" });\n\n const [, num = \"\", modifier = \"\"] = tmp;\n\n ret[i] = Number.parseInt(num, 10);\n\n if (ret[i] >= HARDENED)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Invalid child index\" });\n\n if (modifier === \"h\" || modifier === \"H\" || modifier === \"'\") {\n ret[i] += HARDENED;\n } else if (modifier.length > 0) {\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Invalid modifier\" });\n }\n }\n }\n\n return ret;\n}\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": "AAIA,uBAAS,yBAET,IAAM,EAAW,WAEL,GAAL,CAAK,IAAL,CACL,MAAM,UACN,MAAM,cACN,OAAO,WACP,MAAM,WACN,OAAO,OACP,MAAM,WANI,QAaL,SAAS,CAAS,CAAC,EAAc,CACtC,GAAI,IAAS,KAAM,MAAO,GAE1B,MAAO,6DAA6D,KAAK,CAAI,EAGxE,SAAS,CAAmB,CAAC,EAA4B,CAC9D,IAAI,EAAO,EAEX,GAAI,CAAC,EAAU,CAAI,EACjB,MAAM,IAAI,EAAa,gCAAiC,CAAE,OAAQ,sBAAsB,IAAQ,CAAC,EAGnG,GAAI,QAAQ,KAAK,CAAI,EACnB,EAAO,EAAK,MAAM,CAAC,EAErB,IAAM,EAAW,EAAK,MAAM,GAAG,EAE/B,GAAI,EAAS,SAAW,GAAK,EAAS,KAAO,GAAI,MAAO,CAAC,EAEzD,IAAM,EAAU,MAAM,EAAS,MAAM,EAErC,QAAS,EAAI,EAAG,EAAI,EAAS,OAAQ,IAAK,CAExC,IAAM,EAAU,EAAS,GACzB,GAAI,EAAS,CACX,IAAM,EAAM,gBAAgB,KAAK,CAAO,EACxC,GAAI,IAAQ,KAAM,MAAM,IAAI,EAAa,gCAAiC,CAAE,OAAQ,eAAgB,CAAC,EAErG,KAAS,EAAM,GAAI,EAAW,IAAM,EAIpC,GAFA,EAAI,GAAK,OAAO,SAAS,EAAK,EAAE,EAE5B,EAAI,IAAM,EACZ,MAAM,IAAI,EAAa,gCAAiC,CAAE,OAAQ,qBAAsB,CAAC,EAE3F,GAAI,IAAa,KAAO,IAAa,KAAO,IAAa,IACvD,EAAI,IAAM,EACL,QAAI,EAAS,OAAS,EAC3B,MAAM,IAAI,EAAa,gCAAiC,CAAE,OAAQ,kBAAmB,CAAC,GAK5F,OAAO",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "21044284CC8847F864756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{c as M}from"./chunk-25q3rr1d.js";import{ChainToChainId as w,derivationPathToString as Z,SwapKitError as B,SwapKitNumber as E,WalletOption as u}from"@swapkit/helpers";async function y({chain:C,derivationPath:H,provider:L}){let{AbstractSigner:f,Signature:I}=await import("ethers");class $ extends f{address;chain;derivationPath;provider;constructor({chain:j,derivationPath:q,provider:J}){super(J);this.address="",this.chain=j,this.derivationPath=q,this.provider=J}getAddress=async()=>{if(!this.address){let q=await(await import("@trezor/connect-web")).default.ethereumGetAddress({path:Z(this.derivationPath),showOnTrezor:!0});if(!q.success)throw new B({errorKey:"wallet_trezor_failed_to_get_address",info:{...q,chain:this.chain,derivationPath:this.derivationPath}});this.address=q.payload.address}return this.address};signMessage=async(j)=>{let J=await(await import("@trezor/connect-web")).default.ethereumSignMessage({message:j,path:Z(this.derivationPath)});if(!J.success)throw new B({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...J,chain:this.chain,derivationPath:this.derivationPath,message:j}});return J.payload.signature};signTypedData=async(j,q,J,A)=>{let O=(await import("@trezor/connect-web")).default,{buildEIP712DomainType:V}=await import("@swapkit/toolboxes/evm"),{TypedDataEncoder:X}=await import("ethers"),{EIP712Domain:Y,...Q}=q,W=A??X.from(Q).primaryType,R=V(j),D={domain:j,message:J,primaryType:W,types:{EIP712Domain:R,...Q}},U=await O.ethereumSignTypedData({data:D,metamask_v4_compat:!0,path:Z(this.derivationPath)});if(!U.success)throw new B({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:this.chain,error:U.payload.error}});return U.payload.signature.startsWith("0x")?U.payload.signature:`0x${U.payload.signature}`};signTransaction=async({to:j,gasLimit:q,value:J,data:A,nonce:O,maxFeePerGas:V,maxPriorityFeePerGas:X,gasPrice:Y})=>{if(!j)throw new B({errorKey:"wallet_missing_params",info:{to:j}});if(!q)throw new B({errorKey:"wallet_missing_params",info:{gasLimit:q}});let Q=V&&X;if(Q&&!V)throw new B({errorKey:"wallet_missing_params",info:{maxFeePerGas:V}});if(Q&&!X)throw new B({errorKey:"wallet_missing_params",info:{maxPriorityFeePerGas:X}});if(!(Q||Y))throw new B({errorKey:"wallet_missing_params",info:{gasPrice:Y}});let W=(await import("@trezor/connect-web")).default,{toHexString:R}=await import("@swapkit/toolboxes/evm"),{Transaction:D}=await import("ethers"),U=Q?{maxFeePerGas:R(BigInt(V?.toString()||0)),maxPriorityFeePerGas:R(BigInt(X?.toString()||0))}:Y&&{gasPrice:R(BigInt(Y?.toString()||0))}||{gasPrice:"0x0"},b=R(BigInt(O||await this.provider.getTransactionCount(await this.getAddress(),"pending"))),N={chainId:Number.parseInt(w[this.chain],10),data:A?.toString()||"0x",gasLimit:R(BigInt(q?.toString()||0)),nonce:b,to:j.toString(),value:R(BigInt(J?.toString()||0)),...U},{success:z,payload:k}=await W.ethereumSignTransaction({path:Z(this.derivationPath),transaction:N});if(!z)throw new B({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...k,chain:this.chain,derivationPath:this.derivationPath}});let{r:K,s:G,v:F}=k,h=I.from({r:K,s:G,v:new E(BigInt(F)).getBaseValue("number")}),_=D.from({...N,nonce:Number.parseInt(N.nonce,16),signature:h,type:Q?2:0}).serialized;if(!_)throw new B({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:this.chain,derivationPath:this.derivationPath}});return _};connect=(j)=>{if(!j)throw new B({errorKey:"wallet_provider_not_found",info:{chain:this.chain,derivationPath:this.derivationPath,wallet:u.TREZOR}});return new $({chain:this.chain,derivationPath:this.derivationPath,provider:j})}}return new $({chain:C,derivationPath:H,provider:L})}export{y as getEVMSigner};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
4
|
-
//# sourceMappingURL=chunk-
|
|
3
|
+
//# debugId=84AA3B483AD3C2F864756E2164756E21
|
|
4
|
+
//# sourceMappingURL=chunk-e5bb5ftj.js.map
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"import {\n type Chain,\n ChainToChainId,\n type DerivationPathArray,\n derivationPathToString,\n SwapKitError,\n SwapKitNumber,\n WalletOption,\n} from \"@swapkit/helpers\";\nimport type { JsonRpcProvider, Provider, TransactionRequest, TypedDataDomain, TypedDataField } from \"ethers\";\n\ntype TrezorEVMSignerParams = {\n chain: Chain;\n derivationPath: DerivationPathArray;\n provider: Provider | JsonRpcProvider;\n};\n\nexport async function getEVMSigner({ chain, derivationPath, provider }: TrezorEVMSignerParams) {\n const { AbstractSigner, Signature } = await import(\"ethers\");\n\n class TrezorSigner extends AbstractSigner {\n address: string;\n chain: Chain;\n derivationPath: DerivationPathArray;\n readonly provider: Provider | JsonRpcProvider;\n\n constructor({ chain, derivationPath, provider }: TrezorEVMSignerParams) {\n super(provider);\n\n this.address = \"\";\n this.chain = chain;\n this.derivationPath = derivationPath;\n this.provider = provider;\n }\n\n getAddress = async () => {\n if (!this.address) {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n\n const result = await TrezorConnect.ethereumGetAddress({\n path: derivationPathToString(this.derivationPath),\n showOnTrezor: true,\n });\n\n if (!result.success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_get_address\",\n info: { ...result, chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n this.address = result.payload.address;\n }\n\n return this.address;\n };\n\n signMessage = async (message: string) => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n\n const result = await TrezorConnect.ethereumSignMessage({\n message,\n path: derivationPathToString(this.derivationPath),\n });\n\n if (!result.success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { ...result, chain: this.chain, derivationPath: this.derivationPath, message },\n });\n }\n\n return result.payload.signature;\n };\n\n signTypedData = async (\n domain: TypedDataDomain,\n types: Record<string, TypedDataField[]>,\n value: Record<string, unknown>,\n explicitPrimaryType?: string,\n ) => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { buildEIP712DomainType } = await import(\"@swapkit/toolboxes/evm\");\n const { TypedDataEncoder } = await import(\"ethers\");\n\n const { EIP712Domain: _, ...filteredTypes } = types;\n const primaryType = explicitPrimaryType ?? TypedDataEncoder.from(filteredTypes).primaryType;\n const domainTypes = buildEIP712DomainType(domain);\n\n const data = {\n domain: domain as Record<string, unknown>,\n message: value,\n primaryType,\n types: { EIP712Domain: domainTypes, ...filteredTypes },\n };\n\n const result = await TrezorConnect.ethereumSignTypedData({\n data: data as Parameters<typeof TrezorConnect.ethereumSignTypedData>[0][\"data\"],\n metamask_v4_compat: true,\n path: derivationPathToString(this.derivationPath),\n });\n\n if (!result.success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain: this.chain, error: result.payload.error },\n });\n }\n\n return result.payload.signature.startsWith(\"0x\") ? result.payload.signature : `0x${result.payload.signature}`;\n };\n\n signTransaction = async ({\n to,\n gasLimit,\n value,\n data,\n nonce,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: any: refactor\n }: TransactionRequest) => {\n if (!to) throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { to } });\n if (!gasLimit) throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { gasLimit } });\n\n const isEIP1559 = maxFeePerGas && maxPriorityFeePerGas;\n\n if (isEIP1559 && !maxFeePerGas) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { maxFeePerGas } });\n }\n if (isEIP1559 && !maxPriorityFeePerGas) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { maxPriorityFeePerGas } });\n }\n if (!(isEIP1559 || gasPrice)) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { gasPrice } });\n }\n\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { toHexString } = await import(\"@swapkit/toolboxes/evm\");\n const { Transaction } = await import(\"ethers\");\n\n const additionalFields = isEIP1559\n ? {\n maxFeePerGas: toHexString(BigInt(maxFeePerGas?.toString() || 0)),\n maxPriorityFeePerGas: toHexString(BigInt(maxPriorityFeePerGas?.toString() || 0)),\n }\n : (gasPrice && { gasPrice: toHexString(BigInt(gasPrice?.toString() || 0)) }) || { gasPrice: \"0x0\" };\n\n const hexifiedNonce = toHexString(\n BigInt(nonce || (await this.provider.getTransactionCount(await this.getAddress(), \"pending\"))),\n );\n\n const formattedTx = {\n chainId: Number.parseInt(ChainToChainId[this.chain], 10),\n data: data?.toString() || \"0x\",\n gasLimit: toHexString(BigInt(gasLimit?.toString() || 0)),\n nonce: hexifiedNonce,\n to: to.toString(),\n value: toHexString(BigInt(value?.toString() || 0)),\n ...additionalFields,\n };\n\n const { success, payload } = await TrezorConnect.ethereumSignTransaction({\n path: derivationPathToString(this.derivationPath),\n transaction: formattedTx,\n });\n\n if (!success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { ...payload, chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n const { r, s, v } = payload;\n\n const signature = Signature.from({ r, s, v: new SwapKitNumber(BigInt(v)).getBaseValue(\"number\") });\n\n const serializedTx = Transaction.from({\n ...formattedTx,\n nonce: Number.parseInt(formattedTx.nonce, 16),\n signature,\n type: isEIP1559 ? 2 : 0,\n }).serialized;\n\n if (!serializedTx) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n return serializedTx;\n };\n\n connect = (provider: Provider | null) => {\n if (!provider) {\n throw new SwapKitError({\n errorKey: \"wallet_provider_not_found\",\n info: { chain: this.chain, derivationPath: this.derivationPath, wallet: WalletOption.TREZOR },\n });\n }\n\n return new TrezorSigner({ chain: this.chain, derivationPath: this.derivationPath, provider });\n };\n }\n\n return new TrezorSigner({ chain, derivationPath, provider });\n}\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": "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",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "84AA3B483AD3C2F864756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{b as z}from"./chunk-7fsaymh4.js";import"./chunk-25q3rr1d.js";import{Chain as W,DerivationPath as X,derivationPathToString as Y}from"@swapkit/helpers";import{getRippleToolbox as Z}from"@swapkit/toolboxes/ripple";var w=async({sdk:E,derivationPath:F})=>{let G=F?Y(F):`${X[W.Ripple]}/0`,{address:j}=await E.address.xrpGetAddress({address_n:z(G)}),y=await Z({signer:{getAddress:()=>Promise.resolve(j),signTransaction:()=>{throw Error("signTransaction not supported via toolbox")}}});return{...y,address:j,getAddress:()=>j,transfer:async({recipient:I,assetValue:M,memo:q})=>{let f=await y.createTransaction({assetValue:M,memo:q,recipient:I,sender:j}),O={type:"auth/StdTx",value:{fee:{amount:[{amount:"1000",denom:"drop"}],gas:"28000"},memo:q&&q.length>0?q:"",msg:[{type:"ripple-sdk/MsgSend",value:{amount:[{amount:f.Amount,denom:"drop"}],from_address:j,to_address:I}}],signatures:null}},Q={addressNList:z(G),flags:f.Flags===0?void 0:f.Flags,lastLedgerSequence:f.LastLedgerSequence?.toString(),payment:{amount:f.Amount,destination:f.Destination,destinationTag:(f.DestinationTag??"0").toString()},sequence:(f.Sequence??0).toString(),tx:O},J=JSON.parse(await E.xrp.xrpSignTransaction(Q)),K=J.tx_blob??J.value?.signatures?.[0]?.serializedTx;if(!K)throw Error("KeepKey XRP sign failed");let U=Buffer.from(K,"base64").toString("hex");return y.broadcastTransaction(U)}}};export{w as rippleWalletMethods};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
4
|
-
//# sourceMappingURL=chunk-
|
|
3
|
+
//# debugId=B9E7C62A7E5CA45F64756E2164756E21
|
|
4
|
+
//# sourceMappingURL=chunk-w5xy6rdj.js.map
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n type GenericTransferParams,\n} from \"@swapkit/helpers\";\nimport { getRippleToolbox } from \"@swapkit/toolboxes/ripple\";\nimport { bip32ToAddressNList } from \"../coins\";\n\nexport const rippleWalletMethods = async ({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}) => {\n // Derivation path handling (default to standard XRP 44'/144'/0'/0/0)\n const derivationPathString = derivationPath\n ? derivationPathToString(derivationPath)\n : `${DerivationPath[Chain.Ripple]}/0`;\n\n // Fetch address from KeepKey\n const { address } = await (sdk as any).address.xrpGetAddress({\n address_n: bip32ToAddressNList(derivationPathString),\n });\n\n // Inject minimal signer so toolbox's address helpers work\n const signer = {\n getAddress: () => Promise.resolve(address),\n signTransaction: () => {\n throw new Error(\"signTransaction not supported via toolbox\");\n },\n };\n\n const toolbox = await getRippleToolbox({ signer });\n\n const transfer = async ({ recipient, assetValue, memo }: GenericTransferParams) => {\n // Build XRPL Payment tx using toolbox helper\n const tx = await toolbox.createTransaction({ assetValue, memo, recipient, sender: address });\n\n // Convert toolbox Payment tx into KeepKey StdTx wrapper (KeepKey-specific format)\n const stdTx = {\n type: \"auth/StdTx\",\n value: {\n fee: { amount: [{ amount: \"1000\", denom: \"drop\" }], gas: \"28000\" },\n memo: memo && memo.length > 0 ? memo : \"\",\n msg: [\n {\n type: \"ripple-sdk/MsgSend\",\n value: { amount: [{ amount: tx.Amount, denom: \"drop\" }], from_address: address, to_address: recipient },\n },\n ],\n signatures: null,\n },\n };\n\n const unsignedTx = {\n addressNList: bip32ToAddressNList(derivationPathString),\n flags: tx.Flags === 0 ? undefined : tx.Flags,\n lastLedgerSequence: tx.LastLedgerSequence?.toString(),\n payment: {\n amount: tx.Amount,\n destination: tx.Destination,\n destinationTag: (tx.DestinationTag ?? \"0\").toString(),\n },\n sequence: (tx.Sequence ?? 0).toString(),\n tx: stdTx,\n } as any;\n\n // Sign with KeepKey\n const responseSign = JSON.parse(await (sdk as any).xrp.xrpSignTransaction(unsignedTx));\n\n // keepkey-sdk may return either { tx_blob } or StdTx with Base64 serializedTx\n const txBlob: string | undefined =\n (responseSign as any).tx_blob ?? (responseSign as any).value?.signatures?.[0]?.serializedTx;\n if (!txBlob) throw new Error(\"KeepKey XRP sign failed\");\n\n const buffer = Buffer.from(txBlob, \"base64\");\n const txBlobHex = buffer.toString(\"hex\");\n\n // Broadcast signed tx via toolbox\n return toolbox.broadcastTransaction(txBlobHex);\n };\n\n return { ...toolbox, address, getAddress: () => address, transfer };\n};\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": "0EACA,UACE,oBACA,4BAEA,yBAGF,2BAAS,kCAGF,IAAM,EAAsB,OACjC,MACA,oBAII,CAEJ,IAAM,EAAuB,EACzB,EAAuB,CAAc,EACrC,GAAG,EAAe,EAAM,aAGpB,WAAY,MAAO,EAAY,QAAQ,cAAc,CAC3D,UAAW,EAAoB,CAAoB,CACrD,CAAC,EAUK,EAAU,MAAM,EAAiB,CAAE,OAP1B,CACb,WAAY,IAAM,QAAQ,QAAQ,CAAO,EACzC,gBAAiB,IAAM,CACrB,MAAU,MAAM,2CAA2C,EAE/D,CAEgD,CAAC,EAkDjD,MAAO,IAAK,EAAS,UAAS,WAAY,IAAM,EAAS,SAhDxC,OAAS,YAAW,aAAY,UAAkC,CAEjF,IAAM,EAAK,MAAM,EAAQ,kBAAkB,CAAE,aAAY,OAAM,YAAW,OAAQ,CAAQ,CAAC,EAGrF,EAAQ,CACZ,KAAM,aACN,MAAO,CACL,IAAK,CAAE,OAAQ,CAAC,CAAE,OAAQ,OAAQ,MAAO,MAAO,CAAC,EAAG,IAAK,OAAQ,EACjE,KAAM,GAAQ,EAAK,OAAS,EAAI,EAAO,GACvC,IAAK,CACH,CACE,KAAM,qBACN,MAAO,CAAE,OAAQ,CAAC,CAAE,OAAQ,EAAG,OAAQ,MAAO,MAAO,CAAC,EAAG,aAAc,EAAS,WAAY,CAAU,CACxG,CACF,EACA,WAAY,IACd,CACF,EAEM,EAAa,CACjB,aAAc,EAAoB,CAAoB,EACtD,MAAO,EAAG,QAAU,EAAI,OAAY,EAAG,MACvC,mBAAoB,EAAG,oBAAoB,SAAS,EACpD,QAAS,CACP,OAAQ,EAAG,OACX,YAAa,EAAG,YAChB,gBAAiB,EAAG,gBAAkB,KAAK,SAAS,CACtD,EACA,UAAW,EAAG,UAAY,GAAG,SAAS,EACtC,GAAI,CACN,EAGM,EAAe,KAAK,MAAM,MAAO,EAAY,IAAI,mBAAmB,CAAU,CAAC,EAG/E,EACH,EAAqB,SAAY,EAAqB,OAAO,aAAa,IAAI,aACjF,GAAI,CAAC,EAAQ,MAAU,MAAM,yBAAyB,EAGtD,IAAM,EADS,OAAO,KAAK,EAAQ,QAAQ,EAClB,SAAS,KAAK,EAGvC,OAAO,EAAQ,qBAAqB,CAAS,EAGmB",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "B9E7C62A7E5CA45F64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/dist/keepkey/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Zz={};zz(Zz,{keepkeyWallet:()=>t,KEEPKEY_SUPPORTED_CHAINS:()=>Jz});module.exports=e(Zz);var a=require("@keepkey/keepkey-sdk"),z=require("@swapkit/helpers");var k=require("@swapkit/helpers");async function c({sdk:Q,derivationPath:J}){let{DEFAULT_COSMOS_FEE_MAINNET:X,getCosmosToolbox:V,getFeeRateFromSwapKit:$,createStargateClient:Y}=await import("@swapkit/toolboxes/cosmos"),N=J?k.derivationPathToString(J):`${k.DerivationPath.GAIA}/0`,{address:j}=await Q.address.cosmosGetAddress({address_n:v(N)}),L=await V(k.Chain.Cosmos);if(X.amount[0])X.amount[0].amount=String(await $(k.GAIAConfig.chainId,500));return{...L,address:j,transfer:async({assetValue:G,recipient:q,memo:D})=>{let S=G.getBaseValue("string"),O=await L.getAccount(j),F=await Q.cosmos.cosmosSignAmino({signDoc:{account_number:O?.accountNumber.toString()??"",chain_id:k.GAIAConfig.chainId,fee:X,memo:D||"",msgs:[{type:"cosmos-sdk/MsgSend",value:{amount:[{amount:S,denom:"uatom"}],from_address:j,to_address:q}}],sequence:O?.sequence.toString()??""},signerAddress:j}),H=atob(F.serialized),T=new Uint8Array(H.length).map((_,M)=>H.charCodeAt(M)),Z=await k.getRPCUrl(k.Chain.Cosmos);return(await(await Y(Z)).broadcastTx(T)).transactionHash}}}var K=require("@swapkit/helpers"),h=require("ethers");class m extends h.AbstractSigner{sdk;chain;derivationPath;address;provider;constructor({sdk:Q,chain:J,derivationPath:X,provider:V}){super();this.sdk=Q,this.chain=J,this.derivationPath=X||K.NetworkDerivationPath.ETH,this.address="",this.provider=V}signTypedData=async(Q,J,X,V)=>{let{buildEIP712DomainType:$}=await import("@swapkit/toolboxes/evm"),{TypedDataEncoder:Y}=await import("ethers"),{EIP712Domain:N,...j}=J,L=V??Y.from(j).primaryType,R=$(Q),G=await this.getAddress(),q=await this.sdk.eth.ethSignTypedData({address:G,typedData:{domain:Q,message:X,primaryType:L,types:{EIP712Domain:R,...j}}});if(typeof q!=="string")throw new K.SwapKitError("wallet_keepkey_method_not_supported",{method:"signTypedData"});return q.startsWith("0x")?q:`0x${q}`};getAddress=async()=>{if(this.address)return this.address;let{address:Q}=await this.sdk.address.ethereumGetAddress({address_n:v(K.derivationPathToString(this.derivationPath))});return this.address=Q,Q};signMessage=(Q)=>this.sdk.eth.ethSign({address:this.address,message:Q});signTransaction=async({to:Q,value:J,gasLimit:X,nonce:V,data:$,maxFeePerGas:Y,maxPriorityFeePerGas:N,gasPrice:j})=>{if(!Q)throw new K.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing to address"});if(!X)throw new K.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing gasLimit"});if(!$)throw new K.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing data"});let L=!!((Y||N)&&!j);if(L&&!Y)throw new K.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing maxFeePerGas"});if(L&&!N)throw new K.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing maxPriorityFeePerGas"});if(!(L||j))throw new K.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing gasPrice"});let{toHexString:R}=await import("@swapkit/toolboxes/evm"),G=V?BigInt(V):BigInt(await this.provider.getTransactionCount(await this.getAddress(),"pending")),q={addressNList:[2147483692,2147483708,2147483648,0,0],chainId:R(BigInt(K.ChainToChainId[this.chain])),data:$,from:this.address,gas:R(BigInt(X)),nonce:R(G),to:Q.toString(),value:R(BigInt(J||0)),...L&&{maxFeePerGas:R(BigInt(Y?.toString()||"0")),maxPriorityFeePerGas:R(BigInt(N?.toString()||"0"))},...!L&&{gasPrice:R(BigInt(j?.toString()||"0"))}};return(await this.sdk.eth.ethSignTransaction(q)).serialized};sendTransaction=async(Q)=>{if(!this.provider)throw new K.SwapKitError("wallet_keepkey_no_provider");let J=await this.signTransaction(Q);return await this.provider.broadcastTransaction(J)};connect=(Q)=>new m({chain:this.chain,derivationPath:this.derivationPath,provider:Q,sdk:this.sdk})}var f=require("@swapkit/helpers");async function d({sdk:Q,derivationPath:J}){let{createStargateClient:X,getCosmosToolbox:V}=await import("@swapkit/toolboxes/cosmos"),$=await V(f.Chain.Maya),Y=J?f.derivationPathToString(J):`${f.DerivationPath.MAYA}/0`,{address:N}=await Q.address.mayachainGetAddress({address_n:v(Y)}),j=async({assetValue:G,recipient:q,sender:D,memo:S})=>{let O=await import("@cosmjs/amino"),F=O.makeSignDoc??O.default?.makeSignDoc,{getDenomWithChain:H}=await import("@swapkit/toolboxes/cosmos"),T=await $.getAccount(D);if(!T)throw new f.SwapKitError("wallet_keepkey_account_not_found");let{accountNumber:Z,sequence:U=0}=T,I=G.getBaseValue("string"),_=q&&q!=="",M=_?{type:"mayachain/MsgSend",value:{amount:[{amount:I,denom:G.symbol.toLowerCase()}],from_address:D,to_address:q}}:{type:"mayachain/MsgDeposit",value:{coins:[{amount:I,asset:H(G)}],memo:S,signer:D}},P=F([M],{amount:[],gas:"500000000"},f.MAYAConfig.chainId,S,Z?.toString(),U),B=await(_?Q.mayachain.mayachainSignAminoTransfer:Q.mayachain.mayachainSignAminoDeposit)({signDoc:P,signerAddress:D}),b=atob(B.serialized);return new Uint8Array(b.length).map((E,y)=>b.charCodeAt(y))};return{...$,address:N,deposit:async({assetValue:G,memo:q})=>{let D=await f.getRPCUrl(f.Chain.Maya),S=await X(D),O=await j({assetValue:G,memo:q,sender:N}),{transactionHash:F}=await S.broadcastTx(O);return F},transfer:async({assetValue:G,recipient:q,memo:D})=>{let S=await f.getRPCUrl(f.Chain.Maya),O=await X(S),F=await j({assetValue:G,memo:D,recipient:q,sender:N}),{transactionHash:H}=await O.broadcastTx(F);return H}}}var w=require("@swapkit/helpers");async function o({sdk:Q,derivationPath:J}){let X=await import("@cosmjs/amino"),V=X.makeSignDoc??X.default?.makeSignDoc,{buildAminoMsg:$,getDefaultChainFee:Y,createStargateClient:N,getCosmosToolbox:j}=await import("@swapkit/toolboxes/cosmos"),L=await j(w.Chain.THORChain),R=J?w.derivationPathToString(J):`${w.DerivationPath.THOR}/0`,{address:G}=await Q.address.thorchainGetAddress({address_n:v(R)}),q=async({assetValue:O,recipient:F,sender:H,memo:T})=>{let Z=await L.getAccount(H);if(!Z)throw new w.SwapKitError("wallet_keepkey_account_not_found");let{accountNumber:U,sequence:I=0}=Z,_=F&&F!=="",M=$({assetValue:O,memo:T,recipient:F,sender:H}),P=V([M],Y(w.Chain.THORChain),w.THORConfig.chainId,T,U?.toString(),I),A=_?await Q.thorchain.thorchainSignAminoTransfer({signDoc:P,signerAddress:H}):await Q.thorchain.thorchainSignAminoDeposit({signDoc:P,signerAddress:H}),B=atob(A.serialized);return new Uint8Array(B.length).map((b,E)=>B.charCodeAt(E))};return{...L,address:G,deposit:async({assetValue:O,memo:F})=>{let H=await w.getRPCUrl(w.Chain.THORChain),T=await N(H),Z=await q({assetValue:O,memo:F,sender:G}),{transactionHash:U}=await T.broadcastTx(Z);return U},transfer:async({assetValue:O,recipient:F,memo:H})=>{let T=await w.getRPCUrl(w.Chain.THORChain),Z=await N(T),U=await q({assetValue:O,memo:H,recipient:F,sender:G}),{transactionHash:I}=await Z.broadcastTx(U);return I}}}var W=require("@swapkit/helpers"),x=require("@swapkit/toolboxes/utxo");async function r({sdk:Q,chain:J,derivationPath:X}){let{getUtxoToolbox:V}=await import("@swapkit/toolboxes/utxo"),$=await V(J),Y=[W.Chain.Bitcoin,W.Chain.Litecoin].includes(J)?"p2wpkh":"p2pkh",N=X?W.derivationPathToString(X):`${W.DerivationPath[J]}/0`,j={address_n:v(N),coin:l[J],script_type:Y},L=(await Q.address.utxoGetAddress(j)).address,R=x.getNetworkForChain(J),G=async(Z,U,I="")=>{let _=[];for(let A=0;A<Z.outputsLength;A++){let B=Z.getOutput(A),b=Z.getOutputAddress(A,R),E=Number(B.amount);if(b===L)_.push({addressNList:j.address_n,addressType:"change",amount:E,isChange:!0,scriptType:Y});else if(b){let y=J===W.Chain.BitcoinCash?x.stripToCashAddress(b):b;if(y)_.push({address:y,addressType:"spend",amount:E})}}let M=(A)=>{return A.filter((B)=>B!==null&&typeof B==="object"&&Object.keys(B).length>0)};return(await Q.utxo.utxoSignTransaction({coin:l[J],inputs:U,opReturnData:I,outputs:M(_)})).serializedTx?.toString()},q=async({recipient:Z,feeOptionKey:U,feeRate:I,memo:_,...M})=>{if(!L)throw new W.SwapKitError("wallet_keepkey_invalid_params",{reason:"From address must be provided"});if(!Z)throw new W.SwapKitError("wallet_keepkey_invalid_params",{reason:"Recipient address must be provided"});let P=J===W.Chain.BitcoinCash?$.buildTx:$.createTransaction,{tx:A,inputs:B}=await P({...M,feeRate:I||(await $.getFeeRates())[U||W.FeeOption.Fast],fetchTxHex:!0,memo:_,recipient:Z,sender:L}),b=B.map(({value:y,index:C,hash:g,txHex:u})=>({addressNList:j.address_n,amount:y.toString(),hex:u||"",scriptType:Y,txid:g,vout:C})),E=await G(A,b,_);return $.broadcastTx(E)},D=async(Z,U,I="")=>{let _=v(X?W.derivationPathToString(X.slice(0,3)):W.DerivationPath[J]),M=[];for(let B=0;B<Z.outputsLength;B++){let b=Z.getOutput(B),E=Z.getOutputAddress(B,R),y=Number(b.amount);if(E===L)M.push({addressNList:j.address_n,addressType:"change",amount:y,isChange:!0,scriptType:Y});else if(E){let C=J===W.Chain.BitcoinCash?x.stripToCashAddress(E):E;if(C)M.push({address:C,addressType:"spend",amount:y})}}let P=U.map(({hash:B,index:b,value:E,txHex:y,derivationIndex:C,isChange:g})=>{let u=g?1:0;return{addressNList:[..._,u,C],amount:E.toString(),hex:y||"",scriptType:Y,txid:B,vout:b}});return(await Q.utxo.utxoSignTransaction({coin:l[J],inputs:P,opReturnData:I,outputs:M.filter((B)=>B!==null&&typeof B==="object"&&Object.keys(B).length>0)})).serializedTx?.toString()||""},S=async({utxos:Z,recipient:U,assetValue:I,memo:_,feeRate:M,feeOptionKey:P})=>{let A=M||(await $.getFeeRates())[P||W.FeeOption.Fast],B=J===W.Chain.BitcoinCash?$.buildTx:$.createTransaction,{tx:b,inputs:E}=await B({assetValue:I,feeRate:A,fetchTxHex:!0,memo:_,recipient:U,sender:L}),y=E.map((g)=>{let u=Z.find((p)=>p.hash===g.hash&&p.index===g.index);return{...g,derivationIndex:u?.derivationIndex??0,isChange:u?.isChange??!1}}),C=await D(b,y,_);return $.broadcastTx(C)},O=X?W.derivationPathToString(X.slice(0,3)):W.DerivationPath[J].split("/").slice(0,4).join("/");async function F(){try{let Z={address_n:v(O),coin:l[J],script_type:Y,showDisplay:!1,symbol:J.toUpperCase()},U=await Q.system.info.getPublicKey(Z);return{path:O,xpub:U.xpub}}catch(Z){throw new W.SwapKitError("wallet_keepkey_failed_to_get_public_key",{chain:J,error:Z instanceof Error?Z.message:"Unknown error"})}}async function H({index:Z,change:U=!1}){try{let I=`${O}/${Number(U)}/${Z}`,_=await Q.address.utxoGetAddress({address_n:v(I),coin:l[J],script_type:Y}),M=_.address;if(J===W.Chain.BitcoinCash)M=x.stripToCashAddress(_.address);return{address:M,change:U,index:Z,pubkey:""}}catch{return}}let T=x.createHDWalletHelpers({chain:J,deriveAddress:H,getBalance:$.getBalance,getUtxos:(Z)=>x.getUtxoApi(J).getUtxos({address:Z,fetchTxHex:!0})});return{...$,...T,address:L,deriveAddressAtIndex:H,getExtendedPublicKey:F,signTransaction:G,signTransactionWithMultipleInputs:D,transfer:q,transferFromMultipleAddresses:S}}var t=n({connect:({addChain:Q,supportedChains:J,walletType:X})=>async function($,Y){let N=z.filterSupportedChains({chains:$,supportedChains:J,walletType:X}),j=z.SKConfig.get("integrations").keepKey;if(!j)throw Error("KeepKey config not found");let L=z.SKConfig.get("apiKeys").keepKey||"1234";await i();let R={apiKey:L,pairingInfo:j},G=await a.KeepKeySdk.create(R);if(R.apiKey&&R.apiKey!==L)z.SKConfig.setApiKey("keepKey",R.apiKey);return await Promise.all(N.map(async(q)=>{let D=await Qz({chain:q,derivationPath:Y?.[q]||z.NetworkDerivationPath[q],sdk:G}),S=await D.getAddress()||"";Q({...D,address:S,chain:q,walletType:z.WalletOption.KEEPKEY})})),!0},name:"connectKeepkey",supportedChains:[z.Chain.Arbitrum,z.Chain.Avalanche,z.Chain.Base,z.Chain.Berachain,z.Chain.BinanceSmartChain,z.Chain.Bitcoin,z.Chain.BitcoinCash,z.Chain.Cosmos,z.Chain.Dogecoin,z.Chain.Dash,z.Chain.Ethereum,z.Chain.Gnosis,z.Chain.Litecoin,z.Chain.Monad,z.Chain.Ripple,z.Chain.Optimism,z.Chain.Polygon,z.Chain.THORChain,z.Chain.Maya,z.Chain.XLayer],walletType:z.WalletOption.KEEPKEY}),Jz=s(t);async function Qz({sdk:Q,chain:J,derivationPath:X}){let{getProvider:V,getEvmToolboxAsync:$}=await import("@swapkit/toolboxes/evm");switch(J){case z.Chain.BinanceSmartChain:case z.Chain.Arbitrum:case z.Chain.Berachain:case z.Chain.Optimism:case z.Chain.Polygon:case z.Chain.Avalanche:case z.Chain.Base:case z.Chain.Ethereum:case z.Chain.Gnosis:case z.Chain.Monad:case z.Chain.XLayer:{let Y=await V(J),N=new m({chain:J,derivationPath:X,provider:Y,sdk:Q});return await $(J,{provider:Y,signer:N})}case z.Chain.Cosmos:return c({derivationPath:X,sdk:Q});case z.Chain.THORChain:return o({derivationPath:X,sdk:Q});case z.Chain.Maya:return d({derivationPath:X,sdk:Q});case z.Chain.Bitcoin:case z.Chain.BitcoinCash:case z.Chain.Dash:case z.Chain.Dogecoin:case z.Chain.Litecoin:return r({chain:J,derivationPath:X,sdk:Q});case z.Chain.Ripple:{let{rippleWalletMethods:Y}=await import("../chunk-8sth2w05.js");return Y({derivationPath:X,sdk:Q})}default:throw new z.SwapKitError("wallet_keepkey_chain_not_supported",{chain:J})}}async function i(Q=0){if(Q>=3)alert("KeepKey desktop is required for keepkey-sdk, please go to https://keepkey.com/get-started");if(!await Xz())window.location.assign("keepkey://launch"),await new Promise((X)=>setTimeout(X,30000)),await i(Q+1)}async function Xz(Q="http://localhost:1646/spec/swagger.json"){try{return(await fetch(Q)).status===200}catch{return!1}}
|
|
1
|
+
var Xz={};e(Xz,{keepkeyWallet:()=>t,KEEPKEY_SUPPORTED_CHAINS:()=>zz});module.exports=i(Xz);var n=require("@keepkey/keepkey-sdk"),z=require("@swapkit/helpers"),p=require("@swapkit/wallet-core");var k=require("@swapkit/helpers");async function h({sdk:Q,derivationPath:J}){let{DEFAULT_COSMOS_FEE_MAINNET:X,getCosmosToolbox:V,getFeeRateFromSwapKit:$,createStargateClient:Y}=await import("@swapkit/toolboxes/cosmos"),N=J?k.derivationPathToString(J):`${k.DerivationPath.GAIA}/0`,{address:j}=await Q.address.cosmosGetAddress({address_n:v(N)}),L=await V(k.Chain.Cosmos);if(X.amount[0])X.amount[0].amount=String(await $(k.GAIAConfig.chainId,500));return{...L,address:j,transfer:async({assetValue:G,recipient:q,memo:D})=>{let S=G.getBaseValue("string"),O=await L.getAccount(j),F=await Q.cosmos.cosmosSignAmino({signDoc:{account_number:O?.accountNumber.toString()??"",chain_id:k.GAIAConfig.chainId,fee:X,memo:D||"",msgs:[{type:"cosmos-sdk/MsgSend",value:{amount:[{amount:S,denom:"uatom"}],from_address:j,to_address:q}}],sequence:O?.sequence.toString()??""},signerAddress:j}),H=atob(F.serialized),T=new Uint8Array(H.length).map((_,M)=>H.charCodeAt(M)),Z=await k.getRPCUrl(k.Chain.Cosmos);return(await(await Y(Z)).broadcastTx(T)).transactionHash}}}var w=require("@swapkit/helpers"),d=require("ethers");class m extends d.AbstractSigner{sdk;chain;derivationPath;address;provider;constructor({sdk:Q,chain:J,derivationPath:X,provider:V}){super();this.sdk=Q,this.chain=J,this.derivationPath=X||w.NetworkDerivationPath.ETH,this.address="",this.provider=V}signTypedData=async(Q,J,X,V)=>{let{buildEIP712DomainType:$}=await import("@swapkit/toolboxes/evm"),{TypedDataEncoder:Y}=await import("ethers"),{EIP712Domain:N,...j}=J,L=V??Y.from(j).primaryType,R=$(Q),G=await this.getAddress(),q=await this.sdk.eth.ethSignTypedData({address:G,typedData:{domain:Q,message:X,primaryType:L,types:{EIP712Domain:R,...j}}});if(typeof q!=="string")throw new w.SwapKitError("wallet_keepkey_method_not_supported",{method:"signTypedData"});return q.startsWith("0x")?q:`0x${q}`};getAddress=async()=>{if(this.address)return this.address;let{address:Q}=await this.sdk.address.ethereumGetAddress({address_n:v(w.derivationPathToString(this.derivationPath))});return this.address=Q,Q};signMessage=(Q)=>this.sdk.eth.ethSign({address:this.address,message:Q});signTransaction=async({to:Q,value:J,gasLimit:X,nonce:V,data:$,maxFeePerGas:Y,maxPriorityFeePerGas:N,gasPrice:j})=>{if(!Q)throw new w.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing to address"});if(!X)throw new w.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing gasLimit"});if(!$)throw new w.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing data"});let L=!!((Y||N)&&!j);if(L&&!Y)throw new w.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing maxFeePerGas"});if(L&&!N)throw new w.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing maxPriorityFeePerGas"});if(!(L||j))throw new w.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing gasPrice"});let{toHexString:R}=await import("@swapkit/toolboxes/evm"),G=V?BigInt(V):BigInt(await this.provider.getTransactionCount(await this.getAddress(),"pending")),q={addressNList:[2147483692,2147483708,2147483648,0,0],chainId:R(BigInt(w.ChainToChainId[this.chain])),data:$,from:this.address,gas:R(BigInt(X)),nonce:R(G),to:Q.toString(),value:R(BigInt(J||0)),...L&&{maxFeePerGas:R(BigInt(Y?.toString()||"0")),maxPriorityFeePerGas:R(BigInt(N?.toString()||"0"))},...!L&&{gasPrice:R(BigInt(j?.toString()||"0"))}};return(await this.sdk.eth.ethSignTransaction(q)).serialized};sendTransaction=async(Q)=>{if(!this.provider)throw new w.SwapKitError("wallet_keepkey_no_provider");let J=await this.signTransaction(Q);return await this.provider.broadcastTransaction(J)};connect=(Q)=>new m({chain:this.chain,derivationPath:this.derivationPath,provider:Q,sdk:this.sdk})}var f=require("@swapkit/helpers");async function o({sdk:Q,derivationPath:J}){let{createStargateClient:X,getCosmosToolbox:V}=await import("@swapkit/toolboxes/cosmos"),$=await V(f.Chain.Maya),Y=J?f.derivationPathToString(J):`${f.DerivationPath.MAYA}/0`,{address:N}=await Q.address.mayachainGetAddress({address_n:v(Y)}),j=async({assetValue:G,recipient:q,sender:D,memo:S})=>{let O=await import("@cosmjs/amino"),F=O.makeSignDoc??O.default?.makeSignDoc,{getDenomWithChain:H}=await import("@swapkit/toolboxes/cosmos"),T=await $.getAccount(D);if(!T)throw new f.SwapKitError("wallet_keepkey_account_not_found");let{accountNumber:Z,sequence:U=0}=T,I=G.getBaseValue("string"),_=q&&q!=="",M=_?{type:"mayachain/MsgSend",value:{amount:[{amount:I,denom:G.symbol.toLowerCase()}],from_address:D,to_address:q}}:{type:"mayachain/MsgDeposit",value:{coins:[{amount:I,asset:H(G)}],memo:S,signer:D}},P=F([M],{amount:[],gas:"500000000"},f.MAYAConfig.chainId,S,Z?.toString(),U),B=await(_?Q.mayachain.mayachainSignAminoTransfer:Q.mayachain.mayachainSignAminoDeposit)({signDoc:P,signerAddress:D}),b=atob(B.serialized);return new Uint8Array(b.length).map((E,y)=>b.charCodeAt(y))};return{...$,address:N,deposit:async({assetValue:G,memo:q})=>{let D=await f.getRPCUrl(f.Chain.Maya),S=await X(D),O=await j({assetValue:G,memo:q,sender:N}),{transactionHash:F}=await S.broadcastTx(O);return F},transfer:async({assetValue:G,recipient:q,memo:D})=>{let S=await f.getRPCUrl(f.Chain.Maya),O=await X(S),F=await j({assetValue:G,memo:D,recipient:q,sender:N}),{transactionHash:H}=await O.broadcastTx(F);return H}}}var K=require("@swapkit/helpers");async function r({sdk:Q,derivationPath:J}){let X=await import("@cosmjs/amino"),V=X.makeSignDoc??X.default?.makeSignDoc,{buildAminoMsg:$,getDefaultChainFee:Y,createStargateClient:N,getCosmosToolbox:j}=await import("@swapkit/toolboxes/cosmos"),L=await j(K.Chain.THORChain),R=J?K.derivationPathToString(J):`${K.DerivationPath.THOR}/0`,{address:G}=await Q.address.thorchainGetAddress({address_n:v(R)}),q=async({assetValue:O,recipient:F,sender:H,memo:T})=>{let Z=await L.getAccount(H);if(!Z)throw new K.SwapKitError("wallet_keepkey_account_not_found");let{accountNumber:U,sequence:I=0}=Z,_=F&&F!=="",M=$({assetValue:O,memo:T,recipient:F,sender:H}),P=V([M],Y(K.Chain.THORChain),K.THORConfig.chainId,T,U?.toString(),I),A=_?await Q.thorchain.thorchainSignAminoTransfer({signDoc:P,signerAddress:H}):await Q.thorchain.thorchainSignAminoDeposit({signDoc:P,signerAddress:H}),B=atob(A.serialized);return new Uint8Array(B.length).map((b,E)=>B.charCodeAt(E))};return{...L,address:G,deposit:async({assetValue:O,memo:F})=>{let H=await K.getRPCUrl(K.Chain.THORChain),T=await N(H),Z=await q({assetValue:O,memo:F,sender:G}),{transactionHash:U}=await T.broadcastTx(Z);return U},transfer:async({assetValue:O,recipient:F,memo:H})=>{let T=await K.getRPCUrl(K.Chain.THORChain),Z=await N(T),U=await q({assetValue:O,memo:H,recipient:F,sender:G}),{transactionHash:I}=await Z.broadcastTx(U);return I}}}var W=require("@swapkit/helpers"),x=require("@swapkit/toolboxes/utxo");async function s({sdk:Q,chain:J,derivationPath:X}){let{getUtxoToolbox:V}=await import("@swapkit/toolboxes/utxo"),$=await V(J),Y=[W.Chain.Bitcoin,W.Chain.Litecoin].includes(J)?"p2wpkh":"p2pkh",N=X?W.derivationPathToString(X):`${W.DerivationPath[J]}/0`,j={address_n:v(N),coin:l[J],script_type:Y},L=(await Q.address.utxoGetAddress(j)).address,R=x.getNetworkForChain(J),G=async(Z,U,I="")=>{let _=[];for(let A=0;A<Z.outputsLength;A++){let B=Z.getOutput(A),b=Z.getOutputAddress(A,R),E=Number(B.amount);if(b===L)_.push({addressNList:j.address_n,addressType:"change",amount:E,isChange:!0,scriptType:Y});else if(b){let y=J===W.Chain.BitcoinCash?x.stripToCashAddress(b):b;if(y)_.push({address:y,addressType:"spend",amount:E})}}let M=(A)=>{return A.filter((B)=>B!==null&&typeof B==="object"&&Object.keys(B).length>0)};return(await Q.utxo.utxoSignTransaction({coin:l[J],inputs:U,opReturnData:I,outputs:M(_)})).serializedTx?.toString()},q=async({recipient:Z,feeOptionKey:U,feeRate:I,memo:_,...M})=>{if(!L)throw new W.SwapKitError("wallet_keepkey_invalid_params",{reason:"From address must be provided"});if(!Z)throw new W.SwapKitError("wallet_keepkey_invalid_params",{reason:"Recipient address must be provided"});let P=J===W.Chain.BitcoinCash?$.buildTx:$.createTransaction,{tx:A,inputs:B}=await P({...M,feeRate:I||(await $.getFeeRates())[U||W.FeeOption.Fast],fetchTxHex:!0,memo:_,recipient:Z,sender:L}),b=B.map(({value:y,index:g,hash:C,txHex:u})=>({addressNList:j.address_n,amount:y.toString(),hex:u||"",scriptType:Y,txid:C,vout:g})),E=await G(A,b,_);return $.broadcastTx(E)},D=async(Z,U,I="")=>{let _=v(X?W.derivationPathToString(X.slice(0,3)):W.DerivationPath[J]),M=[];for(let B=0;B<Z.outputsLength;B++){let b=Z.getOutput(B),E=Z.getOutputAddress(B,R),y=Number(b.amount);if(E===L)M.push({addressNList:j.address_n,addressType:"change",amount:y,isChange:!0,scriptType:Y});else if(E){let g=J===W.Chain.BitcoinCash?x.stripToCashAddress(E):E;if(g)M.push({address:g,addressType:"spend",amount:y})}}let P=U.map(({hash:B,index:b,value:E,txHex:y,derivationIndex:g,isChange:C})=>{let u=C?1:0;return{addressNList:[..._,u,g],amount:E.toString(),hex:y||"",scriptType:Y,txid:B,vout:b}});return(await Q.utxo.utxoSignTransaction({coin:l[J],inputs:P,opReturnData:I,outputs:M.filter((B)=>B!==null&&typeof B==="object"&&Object.keys(B).length>0)})).serializedTx?.toString()||""},S=async({utxos:Z,recipient:U,assetValue:I,memo:_,feeRate:M,feeOptionKey:P})=>{let A=M||(await $.getFeeRates())[P||W.FeeOption.Fast],B=J===W.Chain.BitcoinCash?$.buildTx:$.createTransaction,{tx:b,inputs:E}=await B({assetValue:I,feeRate:A,fetchTxHex:!0,memo:_,recipient:U,sender:L}),y=E.map((C)=>{let u=Z.find((c)=>c.hash===C.hash&&c.index===C.index);return{...C,derivationIndex:u?.derivationIndex??0,isChange:u?.isChange??!1}}),g=await D(b,y,_);return $.broadcastTx(g)},O=X?W.derivationPathToString(X.slice(0,3)):W.DerivationPath[J].split("/").slice(0,4).join("/");async function F(){try{let Z={address_n:v(O),coin:l[J],script_type:Y,showDisplay:!1,symbol:J.toUpperCase()},U=await Q.system.info.getPublicKey(Z);return{path:O,xpub:U.xpub}}catch(Z){throw new W.SwapKitError("wallet_keepkey_failed_to_get_public_key",{chain:J,error:Z instanceof Error?Z.message:"Unknown error"})}}async function H({index:Z,change:U=!1}){try{let I=`${O}/${Number(U)}/${Z}`,_=await Q.address.utxoGetAddress({address_n:v(I),coin:l[J],script_type:Y}),M=_.address;if(J===W.Chain.BitcoinCash)M=x.stripToCashAddress(_.address);return{address:M,change:U,index:Z,pubkey:""}}catch{return}}let T=x.createHDWalletHelpers({chain:J,deriveAddress:H,getBalance:$.getBalance,getUtxos:(Z)=>x.getUtxoApi(J).getUtxos({address:Z,fetchTxHex:!0})});return{...$,...T,address:L,deriveAddressAtIndex:H,getExtendedPublicKey:F,signTransaction:G,signTransactionWithMultipleInputs:D,transfer:q,transferFromMultipleAddresses:S}}var t=p.createWallet({connect:({addChain:Q,supportedChains:J,walletType:X})=>async function($,Y){let N=z.filterSupportedChains({chains:$,supportedChains:J,walletType:X}),j=z.SKConfig.get("integrations").keepKey;if(!j)throw Error("KeepKey config not found");let L=z.SKConfig.get("apiKeys").keepKey||"1234";await a();let R={apiKey:L,pairingInfo:j},G=await n.KeepKeySdk.create(R);if(R.apiKey&&R.apiKey!==L)z.SKConfig.setApiKey("keepKey",R.apiKey);return await Promise.all(N.map(async(q)=>{let D=await Jz({chain:q,derivationPath:Y?.[q]||z.NetworkDerivationPath[q],sdk:G}),S=await D.getAddress()||"";Q({...D,address:S,chain:q,walletType:z.WalletOption.KEEPKEY})})),!0},directSigningSupport:{[z.Chain.Arbitrum]:!0,[z.Chain.Avalanche]:!0,[z.Chain.Base]:!0,[z.Chain.Berachain]:!0,[z.Chain.BinanceSmartChain]:!0,[z.Chain.Ethereum]:!0,[z.Chain.Gnosis]:!0,[z.Chain.Monad]:!0,[z.Chain.Optimism]:!0,[z.Chain.Polygon]:!0,[z.Chain.Ripple]:!0,[z.Chain.XLayer]:!0},name:"connectKeepkey",supportedChains:[z.Chain.Arbitrum,z.Chain.Avalanche,z.Chain.Base,z.Chain.Berachain,z.Chain.BinanceSmartChain,z.Chain.Bitcoin,z.Chain.BitcoinCash,z.Chain.Cosmos,z.Chain.Dogecoin,z.Chain.Dash,z.Chain.Ethereum,z.Chain.Gnosis,z.Chain.Litecoin,z.Chain.Monad,z.Chain.Ripple,z.Chain.Optimism,z.Chain.Polygon,z.Chain.THORChain,z.Chain.Maya,z.Chain.XLayer],walletType:z.WalletOption.KEEPKEY}),zz=p.getWalletSupportedChains(t);async function Jz({sdk:Q,chain:J,derivationPath:X}){let{getProvider:V,getEvmToolboxAsync:$}=await import("@swapkit/toolboxes/evm");switch(J){case z.Chain.BinanceSmartChain:case z.Chain.Arbitrum:case z.Chain.Berachain:case z.Chain.Optimism:case z.Chain.Polygon:case z.Chain.Avalanche:case z.Chain.Base:case z.Chain.Ethereum:case z.Chain.Gnosis:case z.Chain.Monad:case z.Chain.XLayer:{let Y=await V(J),N=new m({chain:J,derivationPath:X,provider:Y,sdk:Q});return await $(J,{provider:Y,signer:N})}case z.Chain.Cosmos:return h({derivationPath:X,sdk:Q});case z.Chain.THORChain:return r({derivationPath:X,sdk:Q});case z.Chain.Maya:return o({derivationPath:X,sdk:Q});case z.Chain.Bitcoin:case z.Chain.BitcoinCash:case z.Chain.Dash:case z.Chain.Dogecoin:case z.Chain.Litecoin:return s({chain:J,derivationPath:X,sdk:Q});case z.Chain.Ripple:{let{rippleWalletMethods:Y}=await import("../chunk-8sth2w05.js");return Y({derivationPath:X,sdk:Q})}default:throw new z.SwapKitError("wallet_keepkey_chain_not_supported",{chain:J})}}async function a(Q=0){if(Q>=3)alert("KeepKey desktop is required for keepkey-sdk, please go to https://keepkey.com/get-started");if(!await Qz())window.location.assign("keepkey://launch"),await new Promise((X)=>setTimeout(X,30000)),await a(Q+1)}async function Qz(Q="http://localhost:1646/spec/swagger.json"){try{return(await fetch(Q)).status===200}catch{return!1}}
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=B92DDD410492DC8464756E2164756E21
|
|
4
4
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/keepkey/index.ts", "../src/keepkey/chains/cosmos.ts", "../src/keepkey/chains/evm.ts", "../src/keepkey/chains/mayachain.ts", "../src/keepkey/chains/thorchain.ts", "../src/keepkey/chains/utxo.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n type DerivationPathArray,\n filterSupportedChains,\n NetworkDerivationPath,\n SKConfig,\n SwapKitError,\n WalletOption,\n} from \"@swapkit/helpers\";\n\nexport type { PairingInfo } from \"@keepkey/keepkey-sdk\";\n\nimport { createWallet, getWalletSupportedChains } from \"
|
|
5
|
+
"import { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n type DerivationPathArray,\n filterSupportedChains,\n NetworkDerivationPath,\n SKConfig,\n SwapKitError,\n WalletOption,\n} from \"@swapkit/helpers\";\n\nexport type { PairingInfo } from \"@keepkey/keepkey-sdk\";\n\nimport { createWallet, getWalletSupportedChains } from \"@swapkit/wallet-core\";\nimport { cosmosWalletMethods } from \"./chains/cosmos\";\nimport { KeepKeySigner } from \"./chains/evm\";\nimport { mayachainWalletMethods } from \"./chains/mayachain\";\nimport { thorchainWalletMethods } from \"./chains/thorchain\";\nimport { utxoWalletMethods } from \"./chains/utxo\";\n\nexport const keepkeyWallet = createWallet({\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectKeepkey(chains: Chain[], derivationPathMap?: Record<Chain, DerivationPathArray>) {\n const filteredChains = filterSupportedChains({ chains, supportedChains, walletType });\n const pairingInfo = SKConfig.get(\"integrations\").keepKey;\n if (!pairingInfo) throw new Error(\"KeepKey config not found\");\n\n const initialApiKey = SKConfig.get(\"apiKeys\").keepKey || \"1234\";\n\n await checkAndLaunch();\n\n // Conform to the expected { apiKey, pairingInfo } structure\n const keepkeyConfig = { apiKey: initialApiKey, pairingInfo };\n const keepKeySdk = await KeepKeySdk.create(keepkeyConfig);\n\n // Persist the new API key via SKConfig after pairing\n if (keepkeyConfig.apiKey && keepkeyConfig.apiKey !== initialApiKey) {\n SKConfig.setApiKey(\"keepKey\", keepkeyConfig.apiKey);\n }\n\n await Promise.all(\n filteredChains.map(async (chain) => {\n const walletMethods = await getWalletMethods({\n chain,\n derivationPath: derivationPathMap?.[chain] || NetworkDerivationPath[chain],\n sdk: keepKeySdk,\n });\n const address = (await walletMethods.getAddress()) || \"\";\n\n addChain({ ...walletMethods, address, chain, walletType: WalletOption.KEEPKEY });\n }),\n );\n return true;\n },\n directSigningSupport: {\n [Chain.Arbitrum]: true,\n [Chain.Avalanche]: true,\n [Chain.Base]: true,\n [Chain.Berachain]: true,\n [Chain.BinanceSmartChain]: true,\n [Chain.Ethereum]: true,\n [Chain.Gnosis]: true,\n [Chain.Monad]: true,\n [Chain.Optimism]: true,\n [Chain.Polygon]: true,\n [Chain.Ripple]: true,\n [Chain.XLayer]: true,\n // BTC/BCH/DASH/DOGE/LTC/Cosmos/THORChain/Maya: pending KeepKey SDK signer wrappers (V3 plan PRs)\n },\n name: \"connectKeepkey\",\n supportedChains: [\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Base,\n Chain.Berachain,\n Chain.BinanceSmartChain,\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Cosmos,\n Chain.Dogecoin,\n Chain.Dash,\n Chain.Ethereum,\n Chain.Gnosis,\n Chain.Litecoin,\n Chain.Monad,\n Chain.Ripple,\n Chain.Optimism,\n Chain.Polygon,\n Chain.THORChain,\n Chain.Maya,\n Chain.XLayer,\n ],\n walletType: WalletOption.KEEPKEY,\n});\n\nexport const KEEPKEY_SUPPORTED_CHAINS = getWalletSupportedChains(keepkeyWallet);\n\nasync function getWalletMethods({\n sdk,\n chain,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n chain: Chain;\n derivationPath?: DerivationPathArray;\n}) {\n const { getProvider, getEvmToolboxAsync } = await import(\"@swapkit/toolboxes/evm\");\n\n switch (chain) {\n case Chain.BinanceSmartChain:\n case Chain.Arbitrum:\n case Chain.Berachain:\n case Chain.Optimism:\n case Chain.Polygon:\n case Chain.Avalanche:\n case Chain.Base:\n case Chain.Ethereum:\n case Chain.Gnosis:\n case Chain.Monad:\n case Chain.XLayer: {\n const provider = await getProvider(chain);\n const signer = new KeepKeySigner({ chain, derivationPath, provider, sdk });\n const toolbox = await getEvmToolboxAsync(chain, { provider, signer });\n\n return toolbox;\n }\n case Chain.Cosmos: {\n return cosmosWalletMethods({ derivationPath, sdk });\n }\n case Chain.THORChain: {\n return thorchainWalletMethods({ derivationPath, sdk });\n }\n case Chain.Maya: {\n return mayachainWalletMethods({ derivationPath, sdk });\n }\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Dash:\n case Chain.Dogecoin:\n case Chain.Litecoin: {\n return utxoWalletMethods({ chain, derivationPath, sdk });\n }\n case Chain.Ripple: {\n const { rippleWalletMethods } = await import(\"./chains/ripple\");\n return rippleWalletMethods({ derivationPath, sdk });\n }\n default:\n throw new SwapKitError(\"wallet_keepkey_chain_not_supported\", { chain });\n }\n}\n\n// kk-sdk docs: https://keepkey.com/blog/building_on_the_keepkey_sdk\n// test spec: if offline, launch keepkey-bridge\nasync function checkAndLaunch(attempts = 0) {\n if (attempts >= 3) {\n alert(\"KeepKey desktop is required for keepkey-sdk, please go to https://keepkey.com/get-started\");\n }\n const isAvailable = await checkKeepkeyAvailability();\n\n if (!isAvailable) {\n window.location.assign(\"keepkey://launch\");\n await new Promise((resolve) => setTimeout(resolve, 30000));\n await checkAndLaunch(attempts + 1);\n }\n}\n\nasync function checkKeepkeyAvailability(spec = \"http://localhost:1646/spec/swagger.json\") {\n try {\n const response = await fetch(spec);\n return response.status === 200;\n } catch {\n return false;\n }\n}\n",
|
|
6
6
|
"import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport type { GenericTransferParams } from \"@swapkit/helpers\";\nimport {\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n GAIAConfig,\n getRPCUrl,\n} from \"@swapkit/helpers\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\nexport async function cosmosWalletMethods({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}): Promise<any> {\n const { DEFAULT_COSMOS_FEE_MAINNET, getCosmosToolbox, getFeeRateFromSwapKit, createStargateClient } = await import(\n \"@swapkit/toolboxes/cosmos\"\n );\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath.GAIA}/0`;\n\n const { address: fromAddress } = (await sdk.address.cosmosGetAddress({\n address_n: bip32ToAddressNList(derivationPathString),\n })) as { address: string };\n\n const toolbox = await getCosmosToolbox(Chain.Cosmos);\n\n if (DEFAULT_COSMOS_FEE_MAINNET.amount[0]) {\n DEFAULT_COSMOS_FEE_MAINNET.amount[0].amount = String(await getFeeRateFromSwapKit(GAIAConfig.chainId, 500));\n }\n\n // TODO support other cosmos assets\n const transfer = async ({ assetValue, recipient, memo }: GenericTransferParams) => {\n const amount = assetValue.getBaseValue(\"string\");\n const accountInfo = await toolbox.getAccount(fromAddress);\n\n const keepKeySignedTx = await sdk.cosmos.cosmosSignAmino({\n signDoc: {\n account_number: accountInfo?.accountNumber.toString() ?? \"\",\n chain_id: GAIAConfig.chainId,\n fee: DEFAULT_COSMOS_FEE_MAINNET,\n memo: memo || \"\",\n msgs: [\n {\n type: \"cosmos-sdk/MsgSend\",\n value: { amount: [{ amount, denom: \"uatom\" }], from_address: fromAddress, to_address: recipient },\n },\n ],\n sequence: accountInfo?.sequence.toString() ?? \"\",\n },\n signerAddress: fromAddress,\n });\n\n const decodedBytes = atob(keepKeySignedTx.serialized);\n const uint8Array = new Uint8Array(decodedBytes.length).map((_, i) => decodedBytes.charCodeAt(i));\n\n const rpcUrl = await getRPCUrl(Chain.Cosmos);\n const client = await createStargateClient(rpcUrl);\n const response = await client.broadcastTx(uint8Array);\n\n return response.transactionHash;\n };\n\n return { ...toolbox, address: fromAddress, transfer };\n}\n",
|
|
7
7
|
"import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n type Chain,\n ChainToChainId,\n type DerivationPathArray,\n derivationPathToString,\n NetworkDerivationPath,\n SwapKitError,\n} from \"@swapkit/helpers\";\nimport type { JsonRpcProvider, Provider, TransactionRequest, TypedDataDomain, TypedDataField } from \"ethers\";\nimport { AbstractSigner } from \"ethers\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\ninterface KeepKeyEVMSignerParams {\n sdk: KeepKeySdk;\n chain: Chain;\n derivationPath?: DerivationPathArray;\n provider: Provider | JsonRpcProvider;\n}\n\nexport class KeepKeySigner extends AbstractSigner {\n private sdk: KeepKeySdk;\n private chain: Chain;\n private derivationPath: DerivationPathArray;\n private address: string;\n readonly provider: Provider | JsonRpcProvider;\n\n constructor({ sdk, chain, derivationPath, provider }: KeepKeyEVMSignerParams) {\n super();\n this.sdk = sdk;\n this.chain = chain;\n this.derivationPath = derivationPath || NetworkDerivationPath.ETH;\n this.address = \"\";\n this.provider = provider;\n }\n\n signTypedData = async (\n domain: TypedDataDomain,\n types: Record<string, TypedDataField[]>,\n value: Record<string, unknown>,\n explicitPrimaryType?: string,\n ) => {\n const { buildEIP712DomainType } = await import(\"@swapkit/toolboxes/evm\");\n const { TypedDataEncoder } = await import(\"ethers\");\n\n const { EIP712Domain: _, ...filteredTypes } = types;\n const primaryType = explicitPrimaryType ?? TypedDataEncoder.from(filteredTypes).primaryType;\n const domainTypes = buildEIP712DomainType(domain);\n\n const address = await this.getAddress();\n const result = await this.sdk.eth.ethSignTypedData({\n address,\n typedData: {\n domain: domain as Record<string, unknown>,\n message: value,\n primaryType,\n types: { EIP712Domain: domainTypes, ...filteredTypes },\n },\n });\n\n if (typeof result !== \"string\") {\n throw new SwapKitError(\"wallet_keepkey_method_not_supported\", { method: \"signTypedData\" });\n }\n\n return result.startsWith(\"0x\") ? result : `0x${result}`;\n };\n\n getAddress = async () => {\n if (this.address) return this.address;\n const { address } = await this.sdk.address.ethereumGetAddress({\n address_n: bip32ToAddressNList(derivationPathToString(this.derivationPath)),\n });\n\n this.address = address;\n return address;\n };\n\n signMessage = (message: string) => this.sdk.eth.ethSign({ address: this.address, message }) as Promise<string>;\n\n signTransaction = async ({\n to,\n value,\n gasLimit,\n nonce,\n data,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n }: TransactionRequest) => {\n if (!to) throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing to address\" });\n if (!gasLimit) throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing gasLimit\" });\n if (!data) throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing data\" });\n\n const isEIP1559 = !!((maxFeePerGas || maxPriorityFeePerGas) && !gasPrice);\n if (isEIP1559 && !maxFeePerGas)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing maxFeePerGas\" });\n if (isEIP1559 && !maxPriorityFeePerGas)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing maxPriorityFeePerGas\" });\n if (!(isEIP1559 || gasPrice))\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing gasPrice\" });\n\n const { toHexString } = await import(\"@swapkit/toolboxes/evm\");\n\n const nonceValue = nonce\n ? BigInt(nonce)\n : BigInt(await this.provider.getTransactionCount(await this.getAddress(), \"pending\"));\n\n const input = {\n addressNList: [2147483692, 2147483708, 2147483648, 0, 0],\n chainId: toHexString(BigInt(ChainToChainId[this.chain])),\n data,\n from: this.address,\n gas: toHexString(BigInt(gasLimit)),\n nonce: toHexString(nonceValue),\n to: to.toString(),\n value: toHexString(BigInt(value || 0)),\n ...(isEIP1559 && {\n maxFeePerGas: toHexString(BigInt(maxFeePerGas?.toString() || \"0\")),\n maxPriorityFeePerGas: toHexString(BigInt(maxPriorityFeePerGas?.toString() || \"0\")),\n }),\n ...(!isEIP1559 && {\n // Fixed syntax error and structure here\n gasPrice: toHexString(BigInt(gasPrice?.toString() || \"0\")),\n }),\n };\n const responseSign = await this.sdk.eth.ethSignTransaction(input);\n return responseSign.serialized;\n };\n\n sendTransaction = async (tx: TransactionRequest): Promise<any> => {\n if (!this.provider) throw new SwapKitError(\"wallet_keepkey_no_provider\");\n\n const signedTxHex = await this.signTransaction(tx);\n\n return await this.provider.broadcastTransaction(signedTxHex);\n };\n\n connect = (provider: Provider) =>\n new KeepKeySigner({ chain: this.chain, derivationPath: this.derivationPath, provider, sdk: this.sdk });\n}\n",
|
|
8
8
|
"import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n type AssetValue,\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n type GenericTransferParams,\n getRPCUrl,\n MAYAConfig,\n SwapKitError,\n} from \"@swapkit/helpers\";\nimport type { ThorchainDepositParams } from \"@swapkit/toolboxes/cosmos\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\ntype SignTransactionParams = { assetValue: AssetValue; recipient?: string; sender: string; memo: string | undefined };\n\nexport async function mayachainWalletMethods({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}): Promise<any> {\n const { createStargateClient, getCosmosToolbox } = await import(\"@swapkit/toolboxes/cosmos\");\n\n const toolbox = await getCosmosToolbox(Chain.Maya);\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath.MAYA}/0`;\n\n const { address: fromAddress } = (await sdk.address.mayachainGetAddress({\n address_n: bip32ToAddressNList(derivationPathString),\n })) as { address: string };\n\n const signTransaction = async ({ assetValue, recipient, sender, memo }: SignTransactionParams) => {\n const importedAmino = await import(\"@cosmjs/amino\");\n const makeSignDoc = importedAmino.makeSignDoc ?? importedAmino.default?.makeSignDoc;\n const { getDenomWithChain } = await import(\"@swapkit/toolboxes/cosmos\");\n\n const account = await toolbox.getAccount(sender);\n if (!account) throw new SwapKitError(\"wallet_keepkey_account_not_found\");\n const { accountNumber, sequence = 0 } = account;\n const amount = assetValue.getBaseValue(\"string\");\n\n const isTransfer = recipient && recipient !== \"\";\n\n // TODO check if we can move to toolbox created msg\n const msg = isTransfer\n ? {\n type: \"mayachain/MsgSend\",\n value: {\n amount: [{ amount, denom: assetValue.symbol.toLowerCase() }],\n from_address: sender,\n to_address: recipient,\n },\n }\n : {\n type: \"mayachain/MsgDeposit\",\n value: { coins: [{ amount, asset: getDenomWithChain(assetValue) }], memo, signer: sender },\n };\n\n const signDoc = makeSignDoc(\n [msg],\n { amount: [], gas: \"500000000\" },\n MAYAConfig.chainId,\n memo,\n accountNumber?.toString(),\n sequence,\n );\n\n const sdkMethod = isTransfer ? sdk.mayachain.mayachainSignAminoTransfer : sdk.mayachain.mayachainSignAminoDeposit;\n\n // @ts-expect-error TC\n const signedTx = await sdkMethod({ signDoc, signerAddress: sender });\n const decodedBytes = atob(signedTx.serialized);\n return new Uint8Array(decodedBytes.length).map((_, i) => decodedBytes.charCodeAt(i));\n };\n\n const transfer = async ({ assetValue, recipient, memo }: GenericTransferParams) => {\n const rpcUrl = await getRPCUrl(Chain.Maya);\n const stargateClient = await createStargateClient(rpcUrl);\n const signedTransaction = await signTransaction({ assetValue, memo, recipient, sender: fromAddress });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n const deposit = async ({ assetValue, memo }: ThorchainDepositParams) => {\n const rpcUrl = await getRPCUrl(Chain.Maya);\n const stargateClient = await createStargateClient(rpcUrl);\n const signedTransaction = await signTransaction({ assetValue, memo, sender: fromAddress });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n return { ...toolbox, address: fromAddress, deposit, transfer };\n}\n",
|
|
9
9
|
"import type { KeepKeySdk, TypesThorchainSignDocDeposit, TypesThorchainSignDocTransfer } from \"@keepkey/keepkey-sdk\";\nimport {\n type AssetValue,\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n type GenericTransferParams,\n getRPCUrl,\n SwapKitError,\n THORConfig,\n} from \"@swapkit/helpers\";\nimport type { ThorchainDepositParams } from \"@swapkit/toolboxes/cosmos\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\ntype SignTransactionParams = { assetValue: AssetValue; recipient?: string; sender: string; memo: string | undefined };\n\nexport async function thorchainWalletMethods({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}): Promise<any> {\n const importedAmino = await import(\"@cosmjs/amino\");\n const makeSignDoc = importedAmino.makeSignDoc ?? importedAmino.default?.makeSignDoc;\n const { buildAminoMsg, getDefaultChainFee, createStargateClient, getCosmosToolbox } = await import(\n \"@swapkit/toolboxes/cosmos\"\n );\n\n const toolbox = await getCosmosToolbox(Chain.THORChain);\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath.THOR}/0`;\n\n const { address: fromAddress } = (await sdk.address.thorchainGetAddress({\n address_n: bip32ToAddressNList(derivationPathString),\n })) as { address: string };\n\n const signTransaction = async ({ assetValue, recipient, sender, memo }: SignTransactionParams) => {\n const account = await toolbox.getAccount(sender);\n if (!account) throw new SwapKitError(\"wallet_keepkey_account_not_found\");\n const { accountNumber, sequence = 0 } = account;\n\n const isTransfer = recipient && recipient !== \"\";\n const msg = buildAminoMsg({ assetValue, memo, recipient, sender });\n\n const signDoc = makeSignDoc(\n [msg],\n getDefaultChainFee(Chain.THORChain),\n THORConfig.chainId,\n memo,\n accountNumber?.toString(),\n sequence,\n );\n\n const signedTx = isTransfer\n ? await sdk.thorchain.thorchainSignAminoTransfer({\n signDoc: signDoc as TypesThorchainSignDocTransfer,\n signerAddress: sender,\n })\n : await sdk.thorchain.thorchainSignAminoDeposit({\n signDoc: signDoc as TypesThorchainSignDocDeposit,\n signerAddress: sender,\n });\n const decodedBytes = atob(signedTx.serialized);\n return new Uint8Array(decodedBytes.length).map((_, i) => decodedBytes.charCodeAt(i));\n };\n\n const transfer = async ({ assetValue, recipient, memo }: GenericTransferParams) => {\n const rpcUrl = await getRPCUrl(Chain.THORChain);\n const stargateClient = await createStargateClient(rpcUrl);\n const signedTransaction = await signTransaction({ assetValue, memo, recipient, sender: fromAddress });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n const deposit = async ({ assetValue, memo }: ThorchainDepositParams) => {\n const rpcUrl = await getRPCUrl(Chain.THORChain);\n const stargateClient = await createStargateClient(rpcUrl);\n const signedTransaction = await signTransaction({ assetValue, memo, sender: fromAddress });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n // const signMessage = async (message: string) => {\n // const stargateClient = await createStargateClient(RPCUrl.THORChain);\n // // return signedTx;\n // };\n\n return { ...toolbox, address: fromAddress, deposit, transfer };\n}\n",
|
|
10
10
|
"import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n FeeOption,\n type GenericTransferParams,\n SwapKitError,\n type UTXOChain,\n} from \"@swapkit/helpers\";\nimport {\n createHDWalletHelpers,\n getNetworkForChain,\n getUtxoApi,\n stripToCashAddress,\n type UTXOToolboxes,\n} from \"@swapkit/toolboxes/utxo\";\nimport type { Transaction } from \"@swapkit/utxo-signer\";\nimport { bip32ToAddressNList, ChainToKeepKeyName } from \"../coins\";\n\ninterface KeepKeyInputObject {\n addressNList: number[];\n scriptType: string;\n amount: string;\n vout: number;\n txid: string;\n hex: string;\n}\n\nexport async function utxoWalletMethods({\n sdk,\n chain,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n chain: Exclude<UTXOChain, typeof Chain.Zcash>;\n derivationPath?: DerivationPathArray;\n}) {\n const { getUtxoToolbox } = await import(\"@swapkit/toolboxes/utxo\");\n // This might not work for BCH\n const toolbox = await getUtxoToolbox(chain);\n const scriptType = [Chain.Bitcoin, Chain.Litecoin].includes(chain as typeof Chain.Bitcoin)\n ? (\"p2wpkh\" as const)\n : (\"p2pkh\" as const);\n\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath[chain]}/0`;\n\n const addressInfo = {\n address_n: bip32ToAddressNList(derivationPathString),\n coin: ChainToKeepKeyName[chain],\n script_type: scriptType,\n };\n\n const walletAddress: string = (await sdk.address.utxoGetAddress(addressInfo)).address;\n const network = getNetworkForChain(chain);\n\n const signTransaction = async (tx: Transaction, inputs: KeepKeyInputObject[], memo = \"\") => {\n const outputs: any[] = [];\n\n for (let i = 0; i < tx.outputsLength; i++) {\n const output = tx.getOutput(i);\n const address = tx.getOutputAddress(i, network);\n const value = Number(output.amount);\n\n if (address === walletAddress) {\n outputs.push({\n addressNList: addressInfo.address_n,\n addressType: \"change\",\n amount: value,\n isChange: true,\n scriptType,\n });\n } else if (address) {\n const outputAddress = chain === Chain.BitcoinCash ? stripToCashAddress(address) : address;\n\n if (outputAddress) {\n outputs.push({ address: outputAddress, addressType: \"spend\", amount: value });\n }\n }\n }\n\n const removeNullAndEmptyObjectsFromArray = (arr: any[]) => {\n return arr.filter((item) => item !== null && typeof item === \"object\" && Object.keys(item).length > 0);\n };\n\n const responseSign = await sdk.utxo.utxoSignTransaction({\n coin: ChainToKeepKeyName[chain],\n inputs,\n opReturnData: memo,\n outputs: removeNullAndEmptyObjectsFromArray(outputs),\n });\n\n return responseSign.serializedTx?.toString();\n };\n\n const transfer = async ({ recipient, feeOptionKey, feeRate, memo, ...rest }: GenericTransferParams) => {\n if (!walletAddress)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"From address must be provided\" });\n if (!recipient)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Recipient address must be provided\" });\n\n const createTxMethod =\n chain === Chain.BitcoinCash\n ? (toolbox as UTXOToolboxes[\"BCH\"]).buildTx\n : (toolbox as UTXOToolboxes[\"BTC\"]).createTransaction;\n\n const { tx, inputs: rawInputs } = await createTxMethod({\n ...rest,\n feeRate: feeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast],\n fetchTxHex: true,\n memo,\n recipient,\n sender: walletAddress,\n });\n\n const inputs = rawInputs.map(({ value, index, hash, txHex }) => ({\n //@TODO don't hardcode master, lookup on blockbook what input this is for and what path that address is!\n addressNList: addressInfo.address_n,\n amount: value.toString(),\n hex: txHex || \"\",\n scriptType,\n txid: hash,\n vout: index,\n }));\n\n const txHex = await signTransaction(tx, inputs, memo);\n return toolbox.broadcastTx(txHex);\n };\n\n const signTransactionWithMultipleInputs = async (\n tx: Transaction,\n inputs: Array<{\n hash: string;\n index: number;\n value: number;\n txHex?: string;\n derivationIndex: number;\n isChange: boolean;\n }>,\n memo = \"\",\n ) => {\n const accountAddressN = bip32ToAddressNList(\n derivationPath\n ? derivationPathToString(derivationPath.slice(0, 3) as DerivationPathArray)\n : DerivationPath[chain],\n );\n\n type KeepKeyOutput =\n | { addressNList: number[]; addressType: \"change\"; amount: number; isChange: true; scriptType: string }\n | { address: string; addressType: \"spend\"; amount: number };\n\n const outputs: KeepKeyOutput[] = [];\n for (let i = 0; i < tx.outputsLength; i++) {\n const output = tx.getOutput(i);\n const outputAddress = tx.getOutputAddress(i, network);\n const value = Number(output.amount);\n\n if (outputAddress === walletAddress) {\n outputs.push({\n addressNList: addressInfo.address_n,\n addressType: \"change\",\n amount: value,\n isChange: true,\n scriptType,\n });\n } else if (outputAddress) {\n const finalAddress = chain === Chain.BitcoinCash ? stripToCashAddress(outputAddress) : outputAddress;\n if (finalAddress) {\n outputs.push({ address: finalAddress, addressType: \"spend\", amount: value });\n }\n }\n }\n\n const keepKeyInputs = inputs.map(({ hash, index: inputIndex, value, txHex, derivationIndex, isChange }) => {\n const changePath = isChange ? 1 : 0;\n const inputAddressN = [...accountAddressN, changePath, derivationIndex];\n return {\n addressNList: inputAddressN,\n amount: value.toString(),\n hex: txHex || \"\",\n scriptType,\n txid: hash,\n vout: inputIndex,\n };\n });\n\n const responseSign = await sdk.utxo.utxoSignTransaction({\n coin: ChainToKeepKeyName[chain],\n inputs: keepKeyInputs,\n opReturnData: memo,\n outputs: outputs.filter((item) => item !== null && typeof item === \"object\" && Object.keys(item).length > 0),\n });\n\n return responseSign.serializedTx?.toString() || \"\";\n };\n\n const transferFromMultipleAddresses = async ({\n utxos,\n recipient,\n assetValue,\n memo,\n feeRate,\n feeOptionKey,\n }: {\n utxos: Array<{\n hash: string;\n index: number;\n value: number;\n txHex?: string;\n derivationIndex: number;\n isChange: boolean;\n address: string;\n }>;\n recipient: string;\n assetValue: { getBaseValue: (unit: string) => number; chain: string };\n memo?: string;\n feeRate?: number;\n feeOptionKey?: (typeof FeeOption)[keyof typeof FeeOption];\n }) => {\n const txFeeRate = feeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast];\n\n const createTxMethod =\n chain === Chain.BitcoinCash\n ? (toolbox as UTXOToolboxes[\"BCH\"]).buildTx\n : (toolbox as UTXOToolboxes[\"BTC\"]).createTransaction;\n\n const { tx, inputs: selectedInputs } = await createTxMethod({\n assetValue: assetValue as any,\n feeRate: txFeeRate,\n fetchTxHex: true,\n memo,\n recipient,\n sender: walletAddress,\n });\n\n const inputsWithDerivation = selectedInputs.map(\n (input: { hash: string; index: number; value: number; txHex?: string }) => {\n const utxoInfo = utxos.find((u) => u.hash === input.hash && u.index === input.index);\n return { ...input, derivationIndex: utxoInfo?.derivationIndex ?? 0, isChange: utxoInfo?.isChange ?? false };\n },\n );\n\n const signedTxHex = await signTransactionWithMultipleInputs(tx, inputsWithDerivation, memo);\n return toolbox.broadcastTx(signedTxHex);\n };\n\n const accountPathString = derivationPath\n ? derivationPathToString(derivationPath.slice(0, 3) as DerivationPathArray)\n : DerivationPath[chain].split(\"/\").slice(0, 4).join(\"/\");\n\n async function getExtendedPublicKey() {\n try {\n const path = {\n address_n: bip32ToAddressNList(accountPathString),\n coin: ChainToKeepKeyName[chain],\n script_type: scriptType,\n showDisplay: false,\n symbol: chain.toUpperCase(),\n };\n\n const responsePubkey = await sdk.system.info.getPublicKey(path);\n\n return { path: accountPathString, xpub: responsePubkey.xpub };\n } catch (error) {\n throw new SwapKitError(\"wallet_keepkey_failed_to_get_public_key\", {\n chain,\n error: error instanceof Error ? error.message : \"Unknown error\",\n });\n }\n }\n\n async function deriveAddressAtIndex({ index, change = false }: { index: number; change?: boolean }) {\n try {\n const fullPathString = `${accountPathString}/${Number(change)}/${index}`;\n\n const result = await sdk.address.utxoGetAddress({\n address_n: bip32ToAddressNList(fullPathString),\n coin: ChainToKeepKeyName[chain],\n script_type: scriptType,\n });\n\n let finalAddress = result.address;\n if (chain === Chain.BitcoinCash) {\n finalAddress = stripToCashAddress(result.address);\n }\n\n return { address: finalAddress, change, index, pubkey: \"\" };\n } catch {\n return undefined;\n }\n }\n\n const hdHelpers = createHDWalletHelpers({\n chain,\n deriveAddress: deriveAddressAtIndex,\n getBalance: toolbox.getBalance,\n getUtxos: (address: string) => getUtxoApi(chain).getUtxos({ address, fetchTxHex: true }),\n });\n\n return {\n ...toolbox,\n ...hdHelpers,\n address: walletAddress,\n deriveAddressAtIndex,\n getExtendedPublicKey,\n signTransaction,\n signTransactionWithMultipleInputs,\n transfer,\n transferFromMultipleAddresses,\n };\n}\n"
|
|
11
11
|
],
|
|
12
|
-
"mappings": "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",
|
|
13
|
-
"debugId": "
|
|
12
|
+
"mappings": "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",
|
|
13
|
+
"debugId": "B92DDD410492DC8464756E2164756E21",
|
|
14
14
|
"names": []
|
|
15
15
|
}
|
package/dist/keepkey/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as Xz,b as Zz}from"../chunk-4fapcrj9.js";import{c as C,d as A}from"../chunk-1jexf7qt.js";import{e as S}from"../chunk-1jpcb30j.js";import{KeepKeySdk as bz}from"@keepkey/keepkey-sdk";import{Chain as Q,filterSupportedChains as Ez,NetworkDerivationPath as wz,SKConfig as o,SwapKitError as Kz,WalletOption as Qz}from"@swapkit/helpers";import{Chain as r,DerivationPath as Yz,derivationPathToString as qz,GAIAConfig as n,getRPCUrl as jz}from"@swapkit/helpers";async function s({sdk:J,derivationPath:z}){let{DEFAULT_COSMOS_FEE_MAINNET:X,getCosmosToolbox:M,getFeeRateFromSwapKit:$,createStargateClient:Y}=await import("@swapkit/toolboxes/cosmos"),_=z?qz(z):`${Yz.GAIA}/0`,{address:j}=await J.address.cosmosGetAddress({address_n:A(_)}),L=await M(r.Cosmos);if(X.amount[0])X.amount[0].amount=String(await $(n.chainId,500));return{...L,address:j,transfer:async({assetValue:W,recipient:q,memo:O})=>{let w=W.getBaseValue("string"),N=await L.getAccount(j),V=await J.cosmos.cosmosSignAmino({signDoc:{account_number:N?.accountNumber.toString()??"",chain_id:n.chainId,fee:X,memo:O||"",msgs:[{type:"cosmos-sdk/MsgSend",value:{amount:[{amount:w,denom:"uatom"}],from_address:j,to_address:q}}],sequence:N?.sequence.toString()??""},signerAddress:j}),D=atob(V.serialized),K=new Uint8Array(D.length).map((U,H)=>D.charCodeAt(H)),Z=await jz(r.Cosmos);return(await(await Y(Z)).broadcastTx(K)).transactionHash}}}import{ChainToChainId as Bz,derivationPathToString as Lz,NetworkDerivationPath as Wz,SwapKitError as v}from"@swapkit/helpers";import{AbstractSigner as Gz}from"ethers";class g extends Gz{sdk;chain;derivationPath;address;provider;constructor({sdk:J,chain:z,derivationPath:X,provider:M}){super();this.sdk=J,this.chain=z,this.derivationPath=X||Wz.ETH,this.address="",this.provider=M}signTypedData=async(J,z,X,M)=>{let{buildEIP712DomainType:$}=await import("@swapkit/toolboxes/evm"),{TypedDataEncoder:Y}=await import("ethers"),{EIP712Domain:_,...j}=z,L=M??Y.from(j).primaryType,G=$(J),W=await this.getAddress(),q=await this.sdk.eth.ethSignTypedData({address:W,typedData:{domain:J,message:X,primaryType:L,types:{EIP712Domain:G,...j}}});if(typeof q!=="string")throw new v("wallet_keepkey_method_not_supported",{method:"signTypedData"});return q.startsWith("0x")?q:`0x${q}`};getAddress=async()=>{if(this.address)return this.address;let{address:J}=await this.sdk.address.ethereumGetAddress({address_n:A(Lz(this.derivationPath))});return this.address=J,J};signMessage=(J)=>this.sdk.eth.ethSign({address:this.address,message:J});signTransaction=async({to:J,value:z,gasLimit:X,nonce:M,data:$,maxFeePerGas:Y,maxPriorityFeePerGas:_,gasPrice:j})=>{if(!J)throw new v("wallet_keepkey_invalid_params",{reason:"Missing to address"});if(!X)throw new v("wallet_keepkey_invalid_params",{reason:"Missing gasLimit"});if(!$)throw new v("wallet_keepkey_invalid_params",{reason:"Missing data"});let L=!!((Y||_)&&!j);if(L&&!Y)throw new v("wallet_keepkey_invalid_params",{reason:"Missing maxFeePerGas"});if(L&&!_)throw new v("wallet_keepkey_invalid_params",{reason:"Missing maxPriorityFeePerGas"});if(!(L||j))throw new v("wallet_keepkey_invalid_params",{reason:"Missing gasPrice"});let{toHexString:G}=await import("@swapkit/toolboxes/evm"),W=M?BigInt(M):BigInt(await this.provider.getTransactionCount(await this.getAddress(),"pending")),q={addressNList:[2147483692,2147483708,2147483648,0,0],chainId:G(BigInt(Bz[this.chain])),data:$,from:this.address,gas:G(BigInt(X)),nonce:G(W),to:J.toString(),value:G(BigInt(z||0)),...L&&{maxFeePerGas:G(BigInt(Y?.toString()||"0")),maxPriorityFeePerGas:G(BigInt(_?.toString()||"0"))},...!L&&{gasPrice:G(BigInt(j?.toString()||"0"))}};return(await this.sdk.eth.ethSignTransaction(q)).serialized};sendTransaction=async(J)=>{if(!this.provider)throw new v("wallet_keepkey_no_provider");let z=await this.signTransaction(J);return await this.provider.broadcastTransaction(z)};connect=(J)=>new g({chain:this.chain,derivationPath:this.derivationPath,provider:J,sdk:this.sdk})}import{Chain as m,DerivationPath as Rz,derivationPathToString as Uz,getRPCUrl as a,MAYAConfig as _z,SwapKitError as Nz}from"@swapkit/helpers";async function t({sdk:J,derivationPath:z}){let{createStargateClient:X,getCosmosToolbox:M}=await import("@swapkit/toolboxes/cosmos"),$=await M(m.Maya),Y=z?Uz(z):`${Rz.MAYA}/0`,{address:_}=await J.address.mayachainGetAddress({address_n:A(Y)}),j=async({assetValue:W,recipient:q,sender:O,memo:w})=>{let N=await import("@cosmjs/amino"),V=N.makeSignDoc??N.default?.makeSignDoc,{getDenomWithChain:D}=await import("@swapkit/toolboxes/cosmos"),K=await $.getAccount(O);if(!K)throw new Nz("wallet_keepkey_account_not_found");let{accountNumber:Z,sequence:R=0}=K,F=W.getBaseValue("string"),U=q&&q!=="",H=U?{type:"mayachain/MsgSend",value:{amount:[{amount:F,denom:W.symbol.toLowerCase()}],from_address:O,to_address:q}}:{type:"mayachain/MsgDeposit",value:{coins:[{amount:F,asset:D(W)}],memo:w,signer:O}},T=V([H],{amount:[],gas:"500000000"},_z.chainId,w,Z?.toString(),R),B=await(U?J.mayachain.mayachainSignAminoTransfer:J.mayachain.mayachainSignAminoDeposit)({signDoc:T,signerAddress:O}),I=atob(B.serialized);return new Uint8Array(I.length).map((b,f)=>I.charCodeAt(f))};return{...$,address:_,deposit:async({assetValue:W,memo:q})=>{let O=await a(m.Maya),w=await X(O),N=await j({assetValue:W,memo:q,sender:_}),{transactionHash:V}=await w.broadcastTx(N);return V},transfer:async({assetValue:W,recipient:q,memo:O})=>{let w=await a(m.Maya),N=await X(w),V=await j({assetValue:W,memo:O,recipient:q,sender:_}),{transactionHash:D}=await N.broadcastTx(V);return D}}}import{Chain as u,DerivationPath as Oz,derivationPathToString as Dz,getRPCUrl as i,SwapKitError as Hz,THORConfig as Mz}from"@swapkit/helpers";async function e({sdk:J,derivationPath:z}){let X=await import("@cosmjs/amino"),M=X.makeSignDoc??X.default?.makeSignDoc,{buildAminoMsg:$,getDefaultChainFee:Y,createStargateClient:_,getCosmosToolbox:j}=await import("@swapkit/toolboxes/cosmos"),L=await j(u.THORChain),G=z?Dz(z):`${Oz.THOR}/0`,{address:W}=await J.address.thorchainGetAddress({address_n:A(G)}),q=async({assetValue:N,recipient:V,sender:D,memo:K})=>{let Z=await L.getAccount(D);if(!Z)throw new Hz("wallet_keepkey_account_not_found");let{accountNumber:R,sequence:F=0}=Z,U=V&&V!=="",H=$({assetValue:N,memo:K,recipient:V,sender:D}),T=M([H],Y(u.THORChain),Mz.chainId,K,R?.toString(),F),E=U?await J.thorchain.thorchainSignAminoTransfer({signDoc:T,signerAddress:D}):await J.thorchain.thorchainSignAminoDeposit({signDoc:T,signerAddress:D}),B=atob(E.serialized);return new Uint8Array(B.length).map((I,b)=>B.charCodeAt(b))};return{...L,address:W,deposit:async({assetValue:N,memo:V})=>{let D=await i(u.THORChain),K=await _(D),Z=await q({assetValue:N,memo:V,sender:W}),{transactionHash:R}=await K.broadcastTx(Z);return R},transfer:async({assetValue:N,recipient:V,memo:D})=>{let K=await i(u.THORChain),Z=await _(K),R=await q({assetValue:N,memo:D,recipient:V,sender:W}),{transactionHash:F}=await Z.broadcastTx(R);return F}}}import{Chain as P,DerivationPath as p,derivationPathToString as c,FeeOption as zz,SwapKitError as h}from"@swapkit/helpers";import{createHDWalletHelpers as Vz,getNetworkForChain as Fz,getUtxoApi as Iz,stripToCashAddress as d}from"@swapkit/toolboxes/utxo";async function Jz({sdk:J,chain:z,derivationPath:X}){let{getUtxoToolbox:M}=await import("@swapkit/toolboxes/utxo"),$=await M(z),Y=[P.Bitcoin,P.Litecoin].includes(z)?"p2wpkh":"p2pkh",_=X?c(X):`${p[z]}/0`,j={address_n:A(_),coin:C[z],script_type:Y},L=(await J.address.utxoGetAddress(j)).address,G=Fz(z),W=async(Z,R,F="")=>{let U=[];for(let E=0;E<Z.outputsLength;E++){let B=Z.getOutput(E),I=Z.getOutputAddress(E,G),b=Number(B.amount);if(I===L)U.push({addressNList:j.address_n,addressType:"change",amount:b,isChange:!0,scriptType:Y});else if(I){let f=z===P.BitcoinCash?d(I):I;if(f)U.push({address:f,addressType:"spend",amount:b})}}let H=(E)=>{return E.filter((B)=>B!==null&&typeof B==="object"&&Object.keys(B).length>0)};return(await J.utxo.utxoSignTransaction({coin:C[z],inputs:R,opReturnData:F,outputs:H(U)})).serializedTx?.toString()},q=async({recipient:Z,feeOptionKey:R,feeRate:F,memo:U,...H})=>{if(!L)throw new h("wallet_keepkey_invalid_params",{reason:"From address must be provided"});if(!Z)throw new h("wallet_keepkey_invalid_params",{reason:"Recipient address must be provided"});let T=z===P.BitcoinCash?$.buildTx:$.createTransaction,{tx:E,inputs:B}=await T({...H,feeRate:F||(await $.getFeeRates())[R||zz.Fast],fetchTxHex:!0,memo:U,recipient:Z,sender:L}),I=B.map(({value:f,index:y,hash:k,txHex:x})=>({addressNList:j.address_n,amount:f.toString(),hex:x||"",scriptType:Y,txid:k,vout:y})),b=await W(E,I,U);return $.broadcastTx(b)},O=async(Z,R,F="")=>{let U=A(X?c(X.slice(0,3)):p[z]),H=[];for(let B=0;B<Z.outputsLength;B++){let I=Z.getOutput(B),b=Z.getOutputAddress(B,G),f=Number(I.amount);if(b===L)H.push({addressNList:j.address_n,addressType:"change",amount:f,isChange:!0,scriptType:Y});else if(b){let y=z===P.BitcoinCash?d(b):b;if(y)H.push({address:y,addressType:"spend",amount:f})}}let T=R.map(({hash:B,index:I,value:b,txHex:f,derivationIndex:y,isChange:k})=>{let x=k?1:0;return{addressNList:[...U,x,y],amount:b.toString(),hex:f||"",scriptType:Y,txid:B,vout:I}});return(await J.utxo.utxoSignTransaction({coin:C[z],inputs:T,opReturnData:F,outputs:H.filter((B)=>B!==null&&typeof B==="object"&&Object.keys(B).length>0)})).serializedTx?.toString()||""},w=async({utxos:Z,recipient:R,assetValue:F,memo:U,feeRate:H,feeOptionKey:T})=>{let E=H||(await $.getFeeRates())[T||zz.Fast],B=z===P.BitcoinCash?$.buildTx:$.createTransaction,{tx:I,inputs:b}=await B({assetValue:F,feeRate:E,fetchTxHex:!0,memo:U,recipient:R,sender:L}),f=b.map((k)=>{let x=Z.find((l)=>l.hash===k.hash&&l.index===k.index);return{...k,derivationIndex:x?.derivationIndex??0,isChange:x?.isChange??!1}}),y=await O(I,f,U);return $.broadcastTx(y)},N=X?c(X.slice(0,3)):p[z].split("/").slice(0,4).join("/");async function V(){try{let Z={address_n:A(N),coin:C[z],script_type:Y,showDisplay:!1,symbol:z.toUpperCase()},R=await J.system.info.getPublicKey(Z);return{path:N,xpub:R.xpub}}catch(Z){throw new h("wallet_keepkey_failed_to_get_public_key",{chain:z,error:Z instanceof Error?Z.message:"Unknown error"})}}async function D({index:Z,change:R=!1}){try{let F=`${N}/${Number(R)}/${Z}`,U=await J.address.utxoGetAddress({address_n:A(F),coin:C[z],script_type:Y}),H=U.address;if(z===P.BitcoinCash)H=d(U.address);return{address:H,change:R,index:Z,pubkey:""}}catch{return}}let K=Vz({chain:z,deriveAddress:D,getBalance:$.getBalance,getUtxos:(Z)=>Iz(z).getUtxos({address:Z,fetchTxHex:!0})});return{...$,...K,address:L,deriveAddressAtIndex:D,getExtendedPublicKey:V,signTransaction:W,signTransactionWithMultipleInputs:O,transfer:q,transferFromMultipleAddresses:w}}var fz=Xz({connect:({addChain:J,supportedChains:z,walletType:X})=>async function($,Y){let _=Ez({chains:$,supportedChains:z,walletType:X}),j=o.get("integrations").keepKey;if(!j)throw Error("KeepKey config not found");let L=o.get("apiKeys").keepKey||"1234";await $z();let G={apiKey:L,pairingInfo:j},W=await bz.create(G);if(G.apiKey&&G.apiKey!==L)o.setApiKey("keepKey",G.apiKey);return await Promise.all(_.map(async(q)=>{let O=await Az({chain:q,derivationPath:Y?.[q]||wz[q],sdk:W}),w=await O.getAddress()||"";J({...O,address:w,chain:q,walletType:Qz.KEEPKEY})})),!0},name:"connectKeepkey",supportedChains:[Q.Arbitrum,Q.Avalanche,Q.Base,Q.Berachain,Q.BinanceSmartChain,Q.Bitcoin,Q.BitcoinCash,Q.Cosmos,Q.Dogecoin,Q.Dash,Q.Ethereum,Q.Gnosis,Q.Litecoin,Q.Monad,Q.Ripple,Q.Optimism,Q.Polygon,Q.THORChain,Q.Maya,Q.XLayer],walletType:Qz.KEEPKEY}),QJ=Zz(fz);async function Az({sdk:J,chain:z,derivationPath:X}){let{getProvider:M,getEvmToolboxAsync:$}=await import("@swapkit/toolboxes/evm");switch(z){case Q.BinanceSmartChain:case Q.Arbitrum:case Q.Berachain:case Q.Optimism:case Q.Polygon:case Q.Avalanche:case Q.Base:case Q.Ethereum:case Q.Gnosis:case Q.Monad:case Q.XLayer:{let Y=await M(z),_=new g({chain:z,derivationPath:X,provider:Y,sdk:J});return await $(z,{provider:Y,signer:_})}case Q.Cosmos:return s({derivationPath:X,sdk:J});case Q.THORChain:return e({derivationPath:X,sdk:J});case Q.Maya:return t({derivationPath:X,sdk:J});case Q.Bitcoin:case Q.BitcoinCash:case Q.Dash:case Q.Dogecoin:case Q.Litecoin:return Jz({chain:z,derivationPath:X,sdk:J});case Q.Ripple:{let{rippleWalletMethods:Y}=await import("../chunk-ybje7f3s.js");return Y({derivationPath:X,sdk:J})}default:throw new Kz("wallet_keepkey_chain_not_supported",{chain:z})}}async function $z(J=0){if(J>=3)alert("KeepKey desktop is required for keepkey-sdk, please go to https://keepkey.com/get-started");if(!await Sz())window.location.assign("keepkey://launch"),await new Promise((X)=>setTimeout(X,30000)),await $z(J+1)}async function Sz(J="http://localhost:1646/spec/swagger.json"){try{return(await fetch(J)).status===200}catch{return!1}}export{fz as keepkeyWallet,QJ as KEEPKEY_SUPPORTED_CHAINS};
|
|
1
|
+
import{a as g,b as A}from"../chunk-7fsaymh4.js";import{c as S}from"../chunk-25q3rr1d.js";import{KeepKeySdk as Fz}from"@keepkey/keepkey-sdk";import{Chain as z,filterSupportedChains as Iz,NetworkDerivationPath as bz,SKConfig as o,SwapKitError as Ez,WalletOption as Qz}from"@swapkit/helpers";import{createWallet as Kz,getWalletSupportedChains as wz}from"@swapkit/wallet-core";import{Chain as r,DerivationPath as Zz,derivationPathToString as $z,GAIAConfig as s,getRPCUrl as Yz}from"@swapkit/helpers";async function n({sdk:Q,derivationPath:J}){let{DEFAULT_COSMOS_FEE_MAINNET:X,getCosmosToolbox:M,getFeeRateFromSwapKit:$,createStargateClient:Y}=await import("@swapkit/toolboxes/cosmos"),_=J?$z(J):`${Zz.GAIA}/0`,{address:j}=await Q.address.cosmosGetAddress({address_n:A(_)}),L=await M(r.Cosmos);if(X.amount[0])X.amount[0].amount=String(await $(s.chainId,500));return{...L,address:j,transfer:async({assetValue:W,recipient:q,memo:O})=>{let K=W.getBaseValue("string"),N=await L.getAccount(j),V=await Q.cosmos.cosmosSignAmino({signDoc:{account_number:N?.accountNumber.toString()??"",chain_id:s.chainId,fee:X,memo:O||"",msgs:[{type:"cosmos-sdk/MsgSend",value:{amount:[{amount:K,denom:"uatom"}],from_address:j,to_address:q}}],sequence:N?.sequence.toString()??""},signerAddress:j}),D=atob(V.serialized),w=new Uint8Array(D.length).map((U,H)=>D.charCodeAt(H)),Z=await Yz(r.Cosmos);return(await(await Y(Z)).broadcastTx(w)).transactionHash}}}import{ChainToChainId as qz,derivationPathToString as jz,NetworkDerivationPath as Bz,SwapKitError as v}from"@swapkit/helpers";import{AbstractSigner as Lz}from"ethers";class C extends Lz{sdk;chain;derivationPath;address;provider;constructor({sdk:Q,chain:J,derivationPath:X,provider:M}){super();this.sdk=Q,this.chain=J,this.derivationPath=X||Bz.ETH,this.address="",this.provider=M}signTypedData=async(Q,J,X,M)=>{let{buildEIP712DomainType:$}=await import("@swapkit/toolboxes/evm"),{TypedDataEncoder:Y}=await import("ethers"),{EIP712Domain:_,...j}=J,L=M??Y.from(j).primaryType,G=$(Q),W=await this.getAddress(),q=await this.sdk.eth.ethSignTypedData({address:W,typedData:{domain:Q,message:X,primaryType:L,types:{EIP712Domain:G,...j}}});if(typeof q!=="string")throw new v("wallet_keepkey_method_not_supported",{method:"signTypedData"});return q.startsWith("0x")?q:`0x${q}`};getAddress=async()=>{if(this.address)return this.address;let{address:Q}=await this.sdk.address.ethereumGetAddress({address_n:A(jz(this.derivationPath))});return this.address=Q,Q};signMessage=(Q)=>this.sdk.eth.ethSign({address:this.address,message:Q});signTransaction=async({to:Q,value:J,gasLimit:X,nonce:M,data:$,maxFeePerGas:Y,maxPriorityFeePerGas:_,gasPrice:j})=>{if(!Q)throw new v("wallet_keepkey_invalid_params",{reason:"Missing to address"});if(!X)throw new v("wallet_keepkey_invalid_params",{reason:"Missing gasLimit"});if(!$)throw new v("wallet_keepkey_invalid_params",{reason:"Missing data"});let L=!!((Y||_)&&!j);if(L&&!Y)throw new v("wallet_keepkey_invalid_params",{reason:"Missing maxFeePerGas"});if(L&&!_)throw new v("wallet_keepkey_invalid_params",{reason:"Missing maxPriorityFeePerGas"});if(!(L||j))throw new v("wallet_keepkey_invalid_params",{reason:"Missing gasPrice"});let{toHexString:G}=await import("@swapkit/toolboxes/evm"),W=M?BigInt(M):BigInt(await this.provider.getTransactionCount(await this.getAddress(),"pending")),q={addressNList:[2147483692,2147483708,2147483648,0,0],chainId:G(BigInt(qz[this.chain])),data:$,from:this.address,gas:G(BigInt(X)),nonce:G(W),to:Q.toString(),value:G(BigInt(J||0)),...L&&{maxFeePerGas:G(BigInt(Y?.toString()||"0")),maxPriorityFeePerGas:G(BigInt(_?.toString()||"0"))},...!L&&{gasPrice:G(BigInt(j?.toString()||"0"))}};return(await this.sdk.eth.ethSignTransaction(q)).serialized};sendTransaction=async(Q)=>{if(!this.provider)throw new v("wallet_keepkey_no_provider");let J=await this.signTransaction(Q);return await this.provider.broadcastTransaction(J)};connect=(Q)=>new C({chain:this.chain,derivationPath:this.derivationPath,provider:Q,sdk:this.sdk})}import{Chain as m,DerivationPath as Wz,derivationPathToString as Gz,getRPCUrl as t,MAYAConfig as Rz,SwapKitError as Uz}from"@swapkit/helpers";async function a({sdk:Q,derivationPath:J}){let{createStargateClient:X,getCosmosToolbox:M}=await import("@swapkit/toolboxes/cosmos"),$=await M(m.Maya),Y=J?Gz(J):`${Wz.MAYA}/0`,{address:_}=await Q.address.mayachainGetAddress({address_n:A(Y)}),j=async({assetValue:W,recipient:q,sender:O,memo:K})=>{let N=await import("@cosmjs/amino"),V=N.makeSignDoc??N.default?.makeSignDoc,{getDenomWithChain:D}=await import("@swapkit/toolboxes/cosmos"),w=await $.getAccount(O);if(!w)throw new Uz("wallet_keepkey_account_not_found");let{accountNumber:Z,sequence:R=0}=w,F=W.getBaseValue("string"),U=q&&q!=="",H=U?{type:"mayachain/MsgSend",value:{amount:[{amount:F,denom:W.symbol.toLowerCase()}],from_address:O,to_address:q}}:{type:"mayachain/MsgDeposit",value:{coins:[{amount:F,asset:D(W)}],memo:K,signer:O}},T=V([H],{amount:[],gas:"500000000"},Rz.chainId,K,Z?.toString(),R),B=await(U?Q.mayachain.mayachainSignAminoTransfer:Q.mayachain.mayachainSignAminoDeposit)({signDoc:T,signerAddress:O}),I=atob(B.serialized);return new Uint8Array(I.length).map((b,f)=>I.charCodeAt(f))};return{...$,address:_,deposit:async({assetValue:W,memo:q})=>{let O=await t(m.Maya),K=await X(O),N=await j({assetValue:W,memo:q,sender:_}),{transactionHash:V}=await K.broadcastTx(N);return V},transfer:async({assetValue:W,recipient:q,memo:O})=>{let K=await t(m.Maya),N=await X(K),V=await j({assetValue:W,memo:O,recipient:q,sender:_}),{transactionHash:D}=await N.broadcastTx(V);return D}}}import{Chain as u,DerivationPath as _z,derivationPathToString as Nz,getRPCUrl as i,SwapKitError as Oz,THORConfig as Dz}from"@swapkit/helpers";async function e({sdk:Q,derivationPath:J}){let X=await import("@cosmjs/amino"),M=X.makeSignDoc??X.default?.makeSignDoc,{buildAminoMsg:$,getDefaultChainFee:Y,createStargateClient:_,getCosmosToolbox:j}=await import("@swapkit/toolboxes/cosmos"),L=await j(u.THORChain),G=J?Nz(J):`${_z.THOR}/0`,{address:W}=await Q.address.thorchainGetAddress({address_n:A(G)}),q=async({assetValue:N,recipient:V,sender:D,memo:w})=>{let Z=await L.getAccount(D);if(!Z)throw new Oz("wallet_keepkey_account_not_found");let{accountNumber:R,sequence:F=0}=Z,U=V&&V!=="",H=$({assetValue:N,memo:w,recipient:V,sender:D}),T=M([H],Y(u.THORChain),Dz.chainId,w,R?.toString(),F),E=U?await Q.thorchain.thorchainSignAminoTransfer({signDoc:T,signerAddress:D}):await Q.thorchain.thorchainSignAminoDeposit({signDoc:T,signerAddress:D}),B=atob(E.serialized);return new Uint8Array(B.length).map((I,b)=>B.charCodeAt(b))};return{...L,address:W,deposit:async({assetValue:N,memo:V})=>{let D=await i(u.THORChain),w=await _(D),Z=await q({assetValue:N,memo:V,sender:W}),{transactionHash:R}=await w.broadcastTx(Z);return R},transfer:async({assetValue:N,recipient:V,memo:D})=>{let w=await i(u.THORChain),Z=await _(w),R=await q({assetValue:N,memo:D,recipient:V,sender:W}),{transactionHash:F}=await Z.broadcastTx(R);return F}}}import{Chain as P,DerivationPath as p,derivationPathToString as c,FeeOption as zz,SwapKitError as h}from"@swapkit/helpers";import{createHDWalletHelpers as Hz,getNetworkForChain as Mz,getUtxoApi as Vz,stripToCashAddress as d}from"@swapkit/toolboxes/utxo";async function Jz({sdk:Q,chain:J,derivationPath:X}){let{getUtxoToolbox:M}=await import("@swapkit/toolboxes/utxo"),$=await M(J),Y=[P.Bitcoin,P.Litecoin].includes(J)?"p2wpkh":"p2pkh",_=X?c(X):`${p[J]}/0`,j={address_n:A(_),coin:g[J],script_type:Y},L=(await Q.address.utxoGetAddress(j)).address,G=Mz(J),W=async(Z,R,F="")=>{let U=[];for(let E=0;E<Z.outputsLength;E++){let B=Z.getOutput(E),I=Z.getOutputAddress(E,G),b=Number(B.amount);if(I===L)U.push({addressNList:j.address_n,addressType:"change",amount:b,isChange:!0,scriptType:Y});else if(I){let f=J===P.BitcoinCash?d(I):I;if(f)U.push({address:f,addressType:"spend",amount:b})}}let H=(E)=>{return E.filter((B)=>B!==null&&typeof B==="object"&&Object.keys(B).length>0)};return(await Q.utxo.utxoSignTransaction({coin:g[J],inputs:R,opReturnData:F,outputs:H(U)})).serializedTx?.toString()},q=async({recipient:Z,feeOptionKey:R,feeRate:F,memo:U,...H})=>{if(!L)throw new h("wallet_keepkey_invalid_params",{reason:"From address must be provided"});if(!Z)throw new h("wallet_keepkey_invalid_params",{reason:"Recipient address must be provided"});let T=J===P.BitcoinCash?$.buildTx:$.createTransaction,{tx:E,inputs:B}=await T({...H,feeRate:F||(await $.getFeeRates())[R||zz.Fast],fetchTxHex:!0,memo:U,recipient:Z,sender:L}),I=B.map(({value:f,index:y,hash:k,txHex:x})=>({addressNList:j.address_n,amount:f.toString(),hex:x||"",scriptType:Y,txid:k,vout:y})),b=await W(E,I,U);return $.broadcastTx(b)},O=async(Z,R,F="")=>{let U=A(X?c(X.slice(0,3)):p[J]),H=[];for(let B=0;B<Z.outputsLength;B++){let I=Z.getOutput(B),b=Z.getOutputAddress(B,G),f=Number(I.amount);if(b===L)H.push({addressNList:j.address_n,addressType:"change",amount:f,isChange:!0,scriptType:Y});else if(b){let y=J===P.BitcoinCash?d(b):b;if(y)H.push({address:y,addressType:"spend",amount:f})}}let T=R.map(({hash:B,index:I,value:b,txHex:f,derivationIndex:y,isChange:k})=>{let x=k?1:0;return{addressNList:[...U,x,y],amount:b.toString(),hex:f||"",scriptType:Y,txid:B,vout:I}});return(await Q.utxo.utxoSignTransaction({coin:g[J],inputs:T,opReturnData:F,outputs:H.filter((B)=>B!==null&&typeof B==="object"&&Object.keys(B).length>0)})).serializedTx?.toString()||""},K=async({utxos:Z,recipient:R,assetValue:F,memo:U,feeRate:H,feeOptionKey:T})=>{let E=H||(await $.getFeeRates())[T||zz.Fast],B=J===P.BitcoinCash?$.buildTx:$.createTransaction,{tx:I,inputs:b}=await B({assetValue:F,feeRate:E,fetchTxHex:!0,memo:U,recipient:R,sender:L}),f=b.map((k)=>{let x=Z.find((l)=>l.hash===k.hash&&l.index===k.index);return{...k,derivationIndex:x?.derivationIndex??0,isChange:x?.isChange??!1}}),y=await O(I,f,U);return $.broadcastTx(y)},N=X?c(X.slice(0,3)):p[J].split("/").slice(0,4).join("/");async function V(){try{let Z={address_n:A(N),coin:g[J],script_type:Y,showDisplay:!1,symbol:J.toUpperCase()},R=await Q.system.info.getPublicKey(Z);return{path:N,xpub:R.xpub}}catch(Z){throw new h("wallet_keepkey_failed_to_get_public_key",{chain:J,error:Z instanceof Error?Z.message:"Unknown error"})}}async function D({index:Z,change:R=!1}){try{let F=`${N}/${Number(R)}/${Z}`,U=await Q.address.utxoGetAddress({address_n:A(F),coin:g[J],script_type:Y}),H=U.address;if(J===P.BitcoinCash)H=d(U.address);return{address:H,change:R,index:Z,pubkey:""}}catch{return}}let w=Hz({chain:J,deriveAddress:D,getBalance:$.getBalance,getUtxos:(Z)=>Vz(J).getUtxos({address:Z,fetchTxHex:!0})});return{...$,...w,address:L,deriveAddressAtIndex:D,getExtendedPublicKey:V,signTransaction:W,signTransactionWithMultipleInputs:O,transfer:q,transferFromMultipleAddresses:K}}var fz=Kz({connect:({addChain:Q,supportedChains:J,walletType:X})=>async function($,Y){let _=Iz({chains:$,supportedChains:J,walletType:X}),j=o.get("integrations").keepKey;if(!j)throw Error("KeepKey config not found");let L=o.get("apiKeys").keepKey||"1234";await Xz();let G={apiKey:L,pairingInfo:j},W=await Fz.create(G);if(G.apiKey&&G.apiKey!==L)o.setApiKey("keepKey",G.apiKey);return await Promise.all(_.map(async(q)=>{let O=await Az({chain:q,derivationPath:Y?.[q]||bz[q],sdk:W}),K=await O.getAddress()||"";Q({...O,address:K,chain:q,walletType:Qz.KEEPKEY})})),!0},directSigningSupport:{[z.Arbitrum]:!0,[z.Avalanche]:!0,[z.Base]:!0,[z.Berachain]:!0,[z.BinanceSmartChain]:!0,[z.Ethereum]:!0,[z.Gnosis]:!0,[z.Monad]:!0,[z.Optimism]:!0,[z.Polygon]:!0,[z.Ripple]:!0,[z.XLayer]:!0},name:"connectKeepkey",supportedChains:[z.Arbitrum,z.Avalanche,z.Base,z.Berachain,z.BinanceSmartChain,z.Bitcoin,z.BitcoinCash,z.Cosmos,z.Dogecoin,z.Dash,z.Ethereum,z.Gnosis,z.Litecoin,z.Monad,z.Ripple,z.Optimism,z.Polygon,z.THORChain,z.Maya,z.XLayer],walletType:Qz.KEEPKEY}),QJ=wz(fz);async function Az({sdk:Q,chain:J,derivationPath:X}){let{getProvider:M,getEvmToolboxAsync:$}=await import("@swapkit/toolboxes/evm");switch(J){case z.BinanceSmartChain:case z.Arbitrum:case z.Berachain:case z.Optimism:case z.Polygon:case z.Avalanche:case z.Base:case z.Ethereum:case z.Gnosis:case z.Monad:case z.XLayer:{let Y=await M(J),_=new C({chain:J,derivationPath:X,provider:Y,sdk:Q});return await $(J,{provider:Y,signer:_})}case z.Cosmos:return n({derivationPath:X,sdk:Q});case z.THORChain:return e({derivationPath:X,sdk:Q});case z.Maya:return a({derivationPath:X,sdk:Q});case z.Bitcoin:case z.BitcoinCash:case z.Dash:case z.Dogecoin:case z.Litecoin:return Jz({chain:J,derivationPath:X,sdk:Q});case z.Ripple:{let{rippleWalletMethods:Y}=await import("../chunk-w5xy6rdj.js");return Y({derivationPath:X,sdk:Q})}default:throw new Ez("wallet_keepkey_chain_not_supported",{chain:J})}}async function Xz(Q=0){if(Q>=3)alert("KeepKey desktop is required for keepkey-sdk, please go to https://keepkey.com/get-started");if(!await Sz())window.location.assign("keepkey://launch"),await new Promise((X)=>setTimeout(X,30000)),await Xz(Q+1)}async function Sz(Q="http://localhost:1646/spec/swagger.json"){try{return(await fetch(Q)).status===200}catch{return!1}}export{fz as keepkeyWallet,QJ as KEEPKEY_SUPPORTED_CHAINS};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=F74B1E58B41CE7D664756E2164756E21
|
|
4
4
|
//# sourceMappingURL=index.js.map
|