@swapkit/wallet-keystore 1.8.18 → 1.8.20

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/index.js CHANGED
@@ -1,3 +1,3 @@
1
- var N=Object.create;var{getPrototypeOf:L,defineProperty:E,getOwnPropertyNames:Y}=Object;var v=Object.prototype.hasOwnProperty;var u=(o,e,s)=>{s=o!=null?N(L(o)):{};let n=e||!o||!o.__esModule?E(s,"default",{value:o,enumerable:!0}):s;for(let g of Y(o))if(!v.call(n,g))E(n,g,{get:()=>o[g],enumerable:!0});return n};var w=((o)=>typeof require!=="undefined"?require:typeof Proxy!=="undefined"?new Proxy(o,{get:(e,s)=>(typeof require!=="undefined"?require:e)[s]}):o)(function(o){if(typeof require!=="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+o+'" is not supported')});import{createCipheriv as q,createDecipheriv as $,pbkdf2 as G,randomBytes as b}from"node:crypto";import{generateMnemonic as J,validateMnemonic as Q}from"@scure/bip39";import{wordlist as R}from"@scure/bip39/wordlists/english";import S from"blakejs";var W=(o)=>{let e=o;if(!(e instanceof Buffer))e=Buffer.from(e,"hex");let s=S.blake2bInit(32);return S.blake2bUpdate(s,e),Array.from(S.blake2bFinal(s)).map((n)=>n<16?`0${n.toString(16)}`:n.toString(16)).join("")},F=(o,e,s,n,g)=>new Promise((y,T)=>{G(o,e,s,n,g,(f,C)=>{if(f)T(f);else y(C)})}),gt=async(o,e)=>{let s=b(32),n=b(16),g={c:262144,prf:"hmac-sha256",dklen:32,salt:s.toString("hex")},y="aes-128-ctr",T=await F(Buffer.from(e),s,g.c,g.dklen,"sha256"),f=q("aes-128-ctr",T.subarray(0,16),n),C=Buffer.concat([f.update(Buffer.from(o,"utf8")),f.final()]);return{meta:"xchain-keystore",version:1,crypto:{cipher:"aes-128-ctr",cipherparams:{iv:n.toString("hex")},ciphertext:C.toString("hex"),kdf:"pbkdf2",kdfparams:g,mac:W(Buffer.concat([T.subarray(16,32),Buffer.from(C)]))}}},pt=(o=12)=>{return J(R,o===12?128:256)},Tt=(o)=>{return Q(o,R)},ft=async(o,e)=>{switch(o.version){case 1:{let s=o.crypto.kdfparams,n=await F(Buffer.from(e),Buffer.from(s.salt,"hex"),s.c,s.dklen,"sha256"),g=Buffer.from(o.crypto.ciphertext,"hex");if(W(Buffer.concat([n.subarray(16,32),g]))!==o.crypto.mac)throw new Error("Invalid password");let T=$(o.crypto.cipher,n.subarray(0,16),Buffer.from(o.crypto.cipherparams.iv,"hex"));return Buffer.concat([T.update(g),T.final()]).toString("utf8")}default:throw new Error("Unsupported keystore version")}};import{Chain as a,CosmosChains as Z,EVMChains as _,NetworkDerivationPath as V,UTXOChains as z,WalletOption as O,derivationPathToString as I,filterSupportedChains as j,getRPCUrl as B,pickEvmApiKey as k,setRequestClientConfig as tt,updatedLastIndex as ot}from"@swapkit/helpers";var st=[..._,...z,...Z,a.Polkadot,a.Chainflip,a.Solana,a.Ripple],nt=async({apis:o,rpcUrl:e,chain:s,phrase:n,ethplorerApiKey:g,covalentApiKey:y,blockchairApiKey:T,swapkitApiKey:f,derivationPath:C,stagenet:x})=>{switch(s){case a.Arbitrum:case a.Avalanche:case a.Base:case a.BinanceSmartChain:case a.Ethereum:case a.Optimism:case a.Polygon:{let{getProvider:c,getToolboxByChain:l}=await import("@swapkit/toolbox-evm"),{HDNodeWallet:t}=await import("ethers"),r=o?.[s],m=k({chain:s,nonEthApiKey:y,ethApiKey:g}),i=c(s,e),p=t.fromPhrase(n).connect(i),P={api:r,apiKey:m,provider:i,signer:p};return{address:p.address,walletMethods:l(s)(P)}}case a.BitcoinCash:{let i=function({builder:P,utxos:d}){return d.forEach((K,A)=>{P.sign(A,r,void 0,65,K.witnessUtxo.value)}),P.build()},{BCHToolbox:c}=await import("@swapkit/toolbox-utxo"),l=o?.[s],t=c({rpcUrl:e,apiKey:T,apiClient:l}),r=await t.createKeysForPath({phrase:n,derivationPath:C}),m=t.getAddressFromKeys(r),p={...t,transfer:(P)=>t.transfer({...P,from:m,signTransaction:i})};return{address:m,walletMethods:p}}case a.Bitcoin:case a.Dash:case a.Dogecoin:case a.Litecoin:{let{getToolboxByChain:c}=await import("@swapkit/toolbox-utxo"),l=o?.[s],t=c(s)({rpcUrl:e,apiKey:T,apiClient:l}),r=t.createKeysForPath({phrase:n,derivationPath:C}),m=t.getAddressFromKeys(r);return{address:m,walletMethods:{...t,transfer:(i)=>t.transfer({...i,from:m,signTransaction:(p)=>p.signAllInputs(r)})}}}case a.Cosmos:case a.Kujira:{let{getToolboxByChain:c}=await import("@swapkit/toolbox-cosmos"),l=o?.[s],t=c(s)({server:l,stagenet:x,swapkitApiKey:f}),r=await t.getAddressFromMnemonic(n),m=await t.getSigner(n);return{address:r,walletMethods:{...t,transfer:(p)=>t.transfer({...p,signer:m})}}}case a.Maya:case a.THORChain:{let{getToolboxByChain:c}=await import("@swapkit/toolbox-cosmos"),l=o?.[s],t=c(s)({server:l,stagenet:x}),r=await t.getSigner(n),m=await t.getAddressFromMnemonic(n);return{address:m,walletMethods:{...t,deposit:({assetValue:i,memo:p})=>t.deposit({assetValue:i,memo:p,from:m,signer:r}),transfer:(i)=>t.transfer({...i,from:m,signer:r}),signMessage:async(i)=>{let p=await t.createPrivateKeyFromPhrase(n);return t.signWithPrivateKey({privateKey:p,message:i})}}}}case a.Polkadot:case a.Chainflip:{let{Network:c,getToolboxByChain:l,createKeyring:t}=await import("@swapkit/toolbox-substrate"),r=await t(n,c[s].prefix),m=await l(s,{signer:r,providerUrl:s===a.Polkadot?B(a.Polkadot):B(a.Chainflip)});return{address:r.address,walletMethods:m}}case a.Solana:{let{SOLToolbox:c,createKeysForPath:l}=await import("@swapkit/toolbox-solana"),t=l({phrase:n,derivationPath:C}),r=c({rpcUrl:e,signer:t});return{address:r.getAddressFromKeys(t),walletMethods:{...r}}}case a.Ripple:{let{XRPToolbox:c,createSigner:l}=await import("@swapkit/toolbox-ripple"),t=l(n),r=await c({rpcUrl:e,signer:t});return{address:t.address,walletMethods:{...r}}}default:throw new Error(`Unsupported chain ${s}`)}};function at({addChain:o,apis:e,rpcUrls:s,config:{thorswapApiKey:n,covalentApiKey:g,ethplorerApiKey:y,blockchairApiKey:T,stagenet:f,swapkitApiKey:C}}){return async function x(c,l,t){tt({apiKey:n});let m=j(c,st,O.KEYSTORE).map(async(i)=>{let p=typeof t==="number"?t:0,P=t&&typeof t==="object"?t[i]:void 0,[d,K,A,h,M]=V[i],U=P||ot(i===a.Solana?[d,K,A,h]:[d,K,A,h,M],p),D=I(U),{address:H,walletMethods:X}=await nt({derivationPath:D,chain:i,apis:e,rpcUrl:s[i],covalentApiKey:g,ethplorerApiKey:y,phrase:l,blockchairApiKey:T,swapkitApiKey:C,stagenet:f});o({...X,chain:i,address:H,balance:[],walletType:O.KEYSTORE})});return await Promise.all(m),!0}}var et={connectKeystore:at};export{Tt as validatePhrase,et as keystoreWallet,pt as generatePhrase,gt as encryptToKeyStore,ft as decryptFromKeystore};
1
+ var N=Object.create;var{getPrototypeOf:L,defineProperty:E,getOwnPropertyNames:Y}=Object;var q=Object.prototype.hasOwnProperty;var u=(o,e,s)=>{s=o!=null?N(L(o)):{};let n=e||!o||!o.__esModule?E(s,"default",{value:o,enumerable:!0}):s;for(let g of Y(o))if(!q.call(n,g))E(n,g,{get:()=>o[g],enumerable:!0});return n};var C=((o)=>typeof require!=="undefined"?require:typeof Proxy!=="undefined"?new Proxy(o,{get:(e,s)=>(typeof require!=="undefined"?require:e)[s]}):o)(function(o){if(typeof require!=="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+o+'" is not supported')});import{createCipheriv as v,createDecipheriv as $,pbkdf2 as G,randomBytes as h}from"node:crypto";import{generateMnemonic as J,validateMnemonic as Q}from"@scure/bip39";import{wordlist as R}from"@scure/bip39/wordlists/english";import S from"blakejs";var W=(o)=>{let e=o;if(!(e instanceof Buffer))e=Buffer.from(e,"hex");let s=S.blake2bInit(32);return S.blake2bUpdate(s,e),Array.from(S.blake2bFinal(s)).map((n)=>n<16?`0${n.toString(16)}`:n.toString(16)).join("")},F=(o,e,s,n,g)=>new Promise((y,w)=>{G(o,e,s,n,g,(f,p)=>{if(f)w(f);else y(p)})}),gt=async(o,e)=>{let s=h(32),n=h(16),g={c:262144,prf:"hmac-sha256",dklen:32,salt:s.toString("hex")},y="aes-128-ctr",w=await F(Buffer.from(e),s,g.c,g.dklen,"sha256"),f=v("aes-128-ctr",w.subarray(0,16),n),p=Buffer.concat([f.update(Buffer.from(o,"utf8")),f.final()]);return{meta:"xchain-keystore",version:1,crypto:{cipher:"aes-128-ctr",cipherparams:{iv:n.toString("hex")},ciphertext:p.toString("hex"),kdf:"pbkdf2",kdfparams:g,mac:W(Buffer.concat([w.subarray(16,32),Buffer.from(p)]))}}},Tt=(o=12)=>{return J(R,o===12?128:256)},wt=(o)=>{return Q(o,R)},pt=async(o,e)=>{switch(o.version){case 1:{let s=o.crypto.kdfparams,n=await F(Buffer.from(e),Buffer.from(s.salt,"hex"),s.c,s.dklen,"sha256"),g=Buffer.from(o.crypto.ciphertext,"hex");if(W(Buffer.concat([n.subarray(16,32),g]))!==o.crypto.mac)throw new Error("Invalid password");let w=$(o.crypto.cipher,n.subarray(0,16),Buffer.from(o.crypto.cipherparams.iv,"hex"));return Buffer.concat([w.update(g),w.final()]).toString("utf8")}default:throw new Error("Unsupported keystore version")}};import{Chain as a,CosmosChains as Z,EVMChains as _,NetworkDerivationPath as V,UTXOChains as z,WalletOption as M,derivationPathToString as I,filterSupportedChains as j,getRPCUrl as O,pickEvmApiKey as k,setRequestClientConfig as tt,updatedLastIndex as ot}from"@swapkit/helpers";var st=[..._,...z,...Z,a.Polkadot,a.Chainflip,a.Solana,a.Ripple,a.Tron],nt=async({apis:o,rpcUrl:e,chain:s,phrase:n,ethplorerApiKey:g,covalentApiKey:y,blockchairApiKey:w,swapkitApiKey:f,derivationPath:p,stagenet:A})=>{switch(s){case a.Arbitrum:case a.Avalanche:case a.Base:case a.BinanceSmartChain:case a.Ethereum:case a.Optimism:case a.Polygon:{let{getProvider:l,getToolboxByChain:i}=await import("@swapkit/toolbox-evm"),{HDNodeWallet:t}=await import("ethers"),r=o?.[s],m=k({chain:s,nonEthApiKey:y,ethApiKey:g}),c=l(s,e),T=t.fromPhrase(n).connect(c),P={api:r,apiKey:m,provider:c,signer:T};return{address:T.address,walletMethods:i(s)(P)}}case a.BitcoinCash:{let c=function({builder:P,utxos:d}){return d.forEach((K,x)=>{P.sign(x,r,void 0,65,K.witnessUtxo.value)}),P.build()},{BCHToolbox:l}=await import("@swapkit/toolbox-utxo"),i=o?.[s],t=l({rpcUrl:e,apiKey:w,apiClient:i}),r=await t.createKeysForPath({phrase:n,derivationPath:p}),m=t.getAddressFromKeys(r),T={...t,transfer:(P)=>t.transfer({...P,from:m,signTransaction:c})};return{address:m,walletMethods:T}}case a.Bitcoin:case a.Dash:case a.Dogecoin:case a.Litecoin:{let{getToolboxByChain:l}=await import("@swapkit/toolbox-utxo"),i=o?.[s],t=l(s)({rpcUrl:e,apiKey:w,apiClient:i}),r=t.createKeysForPath({phrase:n,derivationPath:p}),m=t.getAddressFromKeys(r);return{address:m,walletMethods:{...t,transfer:(c)=>t.transfer({...c,from:m,signTransaction:(T)=>T.signAllInputs(r)})}}}case a.Cosmos:case a.Kujira:{let{getToolboxByChain:l}=await import("@swapkit/toolbox-cosmos"),i=o?.[s],t=l(s)({server:i,stagenet:A,swapkitApiKey:f}),r=await t.getAddressFromMnemonic(n),m=await t.getSigner(n);return{address:r,walletMethods:{...t,transfer:(T)=>t.transfer({...T,signer:m})}}}case a.Maya:case a.THORChain:{let{getToolboxByChain:l}=await import("@swapkit/toolbox-cosmos"),i=o?.[s],t=l(s)({server:i,stagenet:A}),r=await t.getSigner(n),m=await t.getAddressFromMnemonic(n);return{address:m,walletMethods:{...t,deposit:({assetValue:c,memo:T})=>t.deposit({assetValue:c,memo:T,from:m,signer:r}),transfer:(c)=>t.transfer({...c,from:m,signer:r}),signMessage:async(c)=>{let T=await t.createPrivateKeyFromPhrase(n);return t.signWithPrivateKey({privateKey:T,message:c})}}}}case a.Polkadot:case a.Chainflip:{let{Network:l,getToolboxByChain:i,createKeyring:t}=await import("@swapkit/toolbox-substrate"),r=await t(n,l[s].prefix),m=await i(s,{signer:r,providerUrl:s===a.Polkadot?O(a.Polkadot):O(a.Chainflip)});return{address:r.address,walletMethods:m}}case a.Solana:{let{SOLToolbox:l,createKeysForPath:i}=await import("@swapkit/toolbox-solana"),t=i({phrase:n,derivationPath:p}),r=l({rpcUrl:e,signer:t});return{address:r.getAddressFromKeys(t),walletMethods:{...r}}}case a.Ripple:{let{XRPToolbox:l,createSigner:i}=await import("@swapkit/toolbox-ripple"),t=i(n),r=await l({rpcUrl:e,signer:t});return{address:t.address,walletMethods:{...r}}}case a.Tron:{let{createTronToolbox:l}=await import("@swapkit/toolbox-tron"),i=await l({rpcUrl:e,phrase:n,derivationPath:p});return{address:await i.getAddress(),walletMethods:{...i}}}default:throw new Error(`Unsupported chain ${s}`)}};function at({addChain:o,apis:e,rpcUrls:s,config:{thorswapApiKey:n,covalentApiKey:g,ethplorerApiKey:y,blockchairApiKey:w,stagenet:f,swapkitApiKey:p}}){return async function A(l,i,t){tt({apiKey:n});let m=j(l,st,M.KEYSTORE).map(async(c)=>{let T=typeof t==="number"?t:0,P=t&&typeof t==="object"?t[c]:void 0,[d,K,x,b,B]=V[c],D=P||ot(c===a.Solana?[d,K,x,b]:[d,K,x,b,B],T),U=I(D),{address:H,walletMethods:X}=await nt({derivationPath:U,chain:c,apis:e,rpcUrl:s[c],covalentApiKey:g,ethplorerApiKey:y,phrase:i,blockchairApiKey:w,swapkitApiKey:p,stagenet:f});o({...X,chain:c,address:H,balance:[],walletType:M.KEYSTORE})});return await Promise.all(m),!0}}var et={connectKeystore:at};export{wt as validatePhrase,et as keystoreWallet,Tt as generatePhrase,gt as encryptToKeyStore,pt as decryptFromKeystore};
2
2
 
3
- //# debugId=F425DBF2EA345D2164756E2164756E21
3
+ //# debugId=00C6AC00FAD0BE3364756E2164756E21
package/dist/index.js.map CHANGED
@@ -3,9 +3,9 @@
3
3
  "sources": ["../src/helpers.ts", "../src/keystore.ts"],
4
4
  "sourcesContent": [
5
5
  "import { createCipheriv, createDecipheriv, pbkdf2, randomBytes } from \"node:crypto\";\nimport { generateMnemonic, validateMnemonic } from \"@scure/bip39\";\nimport { wordlist } from \"@scure/bip39/wordlists/english\";\nimport blakejs from \"blakejs\";\n\nexport type Keystore = {\n crypto: {\n cipher: string;\n ciphertext: string;\n cipherparams: {\n iv: string;\n };\n kdf: string;\n kdfparams: {\n prf: string;\n dklen: number;\n salt: string;\n c: number;\n };\n mac: string;\n };\n version: number;\n meta: string;\n};\n\n/**\n * taken from `foundry-primitives` and modified\n */\nconst blake256 = (initData: Buffer | string): string => {\n let data = initData;\n\n if (!(data instanceof Buffer)) {\n // @ts-ignore\n data = Buffer.from(data, \"hex\");\n }\n\n const context = blakejs.blake2bInit(32);\n blakejs.blake2bUpdate(context, data);\n\n return Array.from(blakejs.blake2bFinal(context))\n .map((byte) => (byte < 0x10 ? `0${byte.toString(16)}` : byte.toString(16)))\n .join(\"\");\n};\n\nconst pbkdf2Async = (\n passphrase: string | Buffer,\n salt: string | Buffer,\n iterations: number,\n keylen: number,\n digest: string,\n) =>\n new Promise<Buffer>((resolve, reject) => {\n pbkdf2(passphrase, salt, iterations, keylen, digest, (error, drived) => {\n if (error) {\n reject(error);\n } else {\n resolve(drived);\n }\n });\n });\n\nexport const encryptToKeyStore = async (phrase: string, password: string) => {\n const salt = randomBytes(32);\n const iv = randomBytes(16);\n const kdfParams = { c: 262144, prf: \"hmac-sha256\", dklen: 32, salt: salt.toString(\"hex\") };\n const cipher = \"aes-128-ctr\";\n\n const derivedKey = await pbkdf2Async(\n Buffer.from(password),\n salt,\n kdfParams.c,\n kdfParams.dklen,\n \"sha256\",\n );\n const cipherIV = createCipheriv(cipher, derivedKey.subarray(0, 16), iv);\n const ciphertext = Buffer.concat([\n cipherIV.update(Buffer.from(phrase, \"utf8\")),\n cipherIV.final(),\n ]);\n\n return {\n meta: \"xchain-keystore\",\n version: 1,\n crypto: {\n cipher,\n cipherparams: { iv: iv.toString(\"hex\") },\n ciphertext: ciphertext.toString(\"hex\"),\n kdf: \"pbkdf2\",\n kdfparams: kdfParams,\n mac: blake256(Buffer.concat([derivedKey.subarray(16, 32), Buffer.from(ciphertext)])),\n },\n };\n};\n\nexport const generatePhrase = (size: 12 | 24 = 12) => {\n return generateMnemonic(wordlist, size === 12 ? 128 : 256);\n};\n\nexport const validatePhrase = (phrase: string) => {\n return validateMnemonic(phrase, wordlist);\n};\n\nexport const decryptFromKeystore = async (keystore: Keystore, password: string) => {\n switch (keystore.version) {\n case 1: {\n const kdfparams = keystore.crypto.kdfparams;\n const derivedKey = await pbkdf2Async(\n Buffer.from(password),\n Buffer.from(kdfparams.salt, \"hex\"),\n kdfparams.c,\n kdfparams.dklen,\n \"sha256\",\n );\n\n const ciphertext = Buffer.from(keystore.crypto.ciphertext, \"hex\");\n const mac = blake256(Buffer.concat([derivedKey.subarray(16, 32), ciphertext]));\n\n if (mac !== keystore.crypto.mac) throw new Error(\"Invalid password\");\n const decipher = createDecipheriv(\n keystore.crypto.cipher,\n derivedKey.subarray(0, 16),\n Buffer.from(keystore.crypto.cipherparams.iv, \"hex\"),\n );\n\n const phrase = Buffer.concat([decipher.update(ciphertext), decipher.final()]);\n return phrase.toString(\"utf8\");\n }\n\n default:\n throw new Error(\"Unsupported keystore version\");\n }\n};\n",
6
- "import {\n Chain,\n type ChainApis,\n type ConnectWalletParams,\n CosmosChains,\n type DerivationPathArray,\n EVMChains,\n NetworkDerivationPath,\n UTXOChains,\n WalletOption,\n type Witness,\n derivationPathToString,\n filterSupportedChains,\n getRPCUrl,\n pickEvmApiKey,\n setRequestClientConfig,\n updatedLastIndex,\n} from \"@swapkit/helpers\";\nimport type { DepositParam, TransferParams } from \"@swapkit/toolbox-cosmos\";\nimport type {\n Psbt,\n TransactionType,\n UTXOTransferParams,\n UTXOWalletTransferParams,\n} from \"@swapkit/toolbox-utxo\";\n\nconst KEYSTORE_SUPPORTED_CHAINS = [\n ...EVMChains,\n ...UTXOChains,\n ...CosmosChains,\n Chain.Polkadot,\n Chain.Chainflip,\n Chain.Solana,\n Chain.Ripple,\n] as const;\n\ntype KeystoreOptions = {\n ethplorerApiKey?: string;\n blockchairApiKey?: string;\n covalentApiKey?: string;\n swapkitApiKey?: string;\n stagenet?: boolean;\n};\n\ntype Params = KeystoreOptions & {\n apis?: ChainApis;\n rpcUrl?: string;\n chain: Chain;\n phrase: string;\n derivationPath: string;\n};\n\nconst getWalletMethodsForChain = async ({\n apis,\n rpcUrl,\n chain,\n phrase,\n ethplorerApiKey,\n covalentApiKey,\n blockchairApiKey,\n swapkitApiKey,\n derivationPath,\n stagenet,\n}: Params) => {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.Base:\n case Chain.BinanceSmartChain:\n case Chain.Ethereum:\n case Chain.Optimism:\n case Chain.Polygon: {\n const { getProvider, getToolboxByChain } = await import(\"@swapkit/toolbox-evm\");\n const { HDNodeWallet } = await import(\"ethers\");\n\n const api = apis?.[chain];\n\n const apiKey = pickEvmApiKey({\n chain,\n nonEthApiKey: covalentApiKey,\n ethApiKey: ethplorerApiKey,\n });\n const provider = getProvider(chain, rpcUrl);\n const wallet = HDNodeWallet.fromPhrase(phrase).connect(provider);\n const params = { api, apiKey, provider, signer: wallet };\n\n return { address: wallet.address, walletMethods: getToolboxByChain(chain)(params) };\n }\n\n case Chain.BitcoinCash: {\n const { BCHToolbox } = await import(\"@swapkit/toolbox-utxo\");\n\n const api = apis?.[chain];\n\n const toolbox = BCHToolbox({ rpcUrl, apiKey: blockchairApiKey, apiClient: api });\n const keys = await toolbox.createKeysForPath({ phrase, derivationPath });\n const address = toolbox.getAddressFromKeys(keys);\n\n function signTransaction({ builder, utxos }: Awaited<ReturnType<typeof toolbox.buildBCHTx>>) {\n utxos.forEach((utxo, index) => {\n builder.sign(index, keys, undefined, 0x41, (utxo.witnessUtxo as Witness).value);\n });\n\n return builder.build();\n }\n\n const walletMethods = {\n ...toolbox,\n transfer: (\n params: UTXOWalletTransferParams<\n Awaited<ReturnType<typeof toolbox.buildBCHTx>>,\n TransactionType\n >,\n ) => toolbox.transfer({ ...params, from: address, signTransaction }),\n };\n\n return { address, walletMethods };\n }\n\n case Chain.Bitcoin:\n case Chain.Dash:\n case Chain.Dogecoin:\n case Chain.Litecoin: {\n const { getToolboxByChain } = await import(\"@swapkit/toolbox-utxo\");\n\n const api = apis?.[chain];\n\n const toolbox = getToolboxByChain(chain)({\n rpcUrl,\n apiKey: blockchairApiKey,\n apiClient: api,\n });\n\n const keys = toolbox.createKeysForPath({ phrase, derivationPath });\n const address = toolbox.getAddressFromKeys(keys);\n\n return {\n address,\n walletMethods: {\n ...toolbox,\n transfer: (params: UTXOTransferParams) =>\n toolbox.transfer({\n ...params,\n from: address,\n signTransaction: (psbt: Psbt) => psbt.signAllInputs(keys),\n }),\n },\n };\n }\n\n case Chain.Cosmos:\n case Chain.Kujira: {\n const { getToolboxByChain } = await import(\"@swapkit/toolbox-cosmos\");\n\n const api = apis?.[chain];\n\n const toolbox = getToolboxByChain(chain)({ server: api, stagenet, swapkitApiKey });\n const address = await toolbox.getAddressFromMnemonic(phrase);\n const signer = await toolbox.getSigner(phrase);\n\n const transfer = (params: TransferParams) => toolbox.transfer({ ...params, signer });\n\n return { address, walletMethods: { ...toolbox, transfer } };\n }\n\n case Chain.Maya:\n case Chain.THORChain: {\n const { getToolboxByChain } = await import(\"@swapkit/toolbox-cosmos\");\n\n const api = apis?.[chain];\n\n const toolbox = getToolboxByChain(chain)({ server: api, stagenet });\n const signer = await toolbox.getSigner(phrase);\n const address = await toolbox.getAddressFromMnemonic(phrase);\n\n return {\n address,\n walletMethods: {\n ...toolbox,\n deposit: ({ assetValue, memo }: DepositParam) =>\n toolbox.deposit({ assetValue, memo, from: address, signer }),\n transfer: (params: TransferParams) =>\n toolbox.transfer({ ...params, from: address, signer }),\n signMessage: async (message: string) => {\n const privateKey = await toolbox.createPrivateKeyFromPhrase(phrase);\n return toolbox.signWithPrivateKey({ privateKey, message });\n },\n },\n };\n }\n\n case Chain.Polkadot:\n case Chain.Chainflip: {\n const { Network, getToolboxByChain, createKeyring } = await import(\n \"@swapkit/toolbox-substrate\"\n );\n\n const signer = await createKeyring(phrase, Network[chain].prefix);\n const toolbox = await getToolboxByChain(chain, {\n signer,\n providerUrl:\n chain === Chain.Polkadot ? getRPCUrl(Chain.Polkadot) : getRPCUrl(Chain.Chainflip),\n });\n\n return { address: signer.address, walletMethods: toolbox };\n }\n\n case Chain.Solana: {\n const { SOLToolbox, createKeysForPath } = await import(\"@swapkit/toolbox-solana\");\n const signer = createKeysForPath({ phrase, derivationPath });\n const toolbox = SOLToolbox({ rpcUrl, signer });\n\n return {\n address: toolbox.getAddressFromKeys(signer),\n walletMethods: {\n ...toolbox,\n },\n };\n }\n\n case Chain.Ripple: {\n const { XRPToolbox, createSigner } = await import(\"@swapkit/toolbox-ripple\");\n const signer = createSigner(phrase);\n const toolbox = await XRPToolbox({ rpcUrl, signer });\n\n return {\n address: signer.address,\n walletMethods: {\n ...toolbox,\n },\n };\n }\n\n default:\n throw new Error(`Unsupported chain ${chain}`);\n }\n};\n\nfunction connectKeystore({\n addChain,\n apis,\n rpcUrls,\n config: {\n thorswapApiKey,\n covalentApiKey,\n ethplorerApiKey,\n blockchairApiKey,\n stagenet,\n swapkitApiKey,\n },\n}: ConnectWalletParams) {\n return async function connectKeystore(\n chains: Chain[],\n phrase: string,\n derivationPathMapOrIndex?: { [chain in Chain]?: DerivationPathArray } | number,\n ) {\n setRequestClientConfig({ apiKey: thorswapApiKey });\n\n const supportedChains = filterSupportedChains(\n chains,\n KEYSTORE_SUPPORTED_CHAINS,\n WalletOption.KEYSTORE,\n );\n\n const promises = supportedChains.map(async (chain) => {\n const derivationPathIndex =\n typeof derivationPathMapOrIndex === \"number\" ? derivationPathMapOrIndex : 0;\n\n const derivationPathFromMap =\n derivationPathMapOrIndex && typeof derivationPathMapOrIndex === \"object\"\n ? derivationPathMapOrIndex[chain]\n : undefined;\n\n const [first, second, third, fourth, fifth] = NetworkDerivationPath[chain];\n\n const derivationPathArray: DerivationPathArray =\n derivationPathFromMap ||\n updatedLastIndex(\n chain === Chain.Solana\n ? [first, second, third, fourth]\n : [first, second, third, fourth, fifth],\n derivationPathIndex,\n );\n\n const derivationPath = derivationPathToString(derivationPathArray);\n\n const { address, walletMethods } = await getWalletMethodsForChain({\n derivationPath,\n chain,\n apis,\n rpcUrl: rpcUrls[chain],\n covalentApiKey,\n ethplorerApiKey,\n phrase,\n blockchairApiKey,\n swapkitApiKey,\n stagenet,\n });\n\n addChain({\n ...walletMethods,\n chain,\n address,\n balance: [],\n walletType: WalletOption.KEYSTORE,\n });\n });\n\n await Promise.all(promises);\n\n return true;\n };\n}\n\nexport const keystoreWallet = { connectKeystore } as const;\n"
6
+ "import {\n Chain,\n type ChainApis,\n type ConnectWalletParams,\n CosmosChains,\n type DerivationPathArray,\n EVMChains,\n NetworkDerivationPath,\n UTXOChains,\n WalletOption,\n type Witness,\n derivationPathToString,\n filterSupportedChains,\n getRPCUrl,\n pickEvmApiKey,\n setRequestClientConfig,\n updatedLastIndex,\n} from \"@swapkit/helpers\";\nimport type { DepositParam, TransferParams } from \"@swapkit/toolbox-cosmos\";\nimport type {\n Psbt,\n TransactionType,\n UTXOTransferParams,\n UTXOWalletTransferParams,\n} from \"@swapkit/toolbox-utxo\";\n\nconst KEYSTORE_SUPPORTED_CHAINS = [\n ...EVMChains,\n ...UTXOChains,\n ...CosmosChains,\n Chain.Polkadot,\n Chain.Chainflip,\n Chain.Solana,\n Chain.Ripple,\n Chain.Tron,\n] as const;\n\ntype KeystoreOptions = {\n ethplorerApiKey?: string;\n blockchairApiKey?: string;\n covalentApiKey?: string;\n swapkitApiKey?: string;\n stagenet?: boolean;\n};\n\ntype Params = KeystoreOptions & {\n apis?: ChainApis;\n rpcUrl?: string;\n chain: Chain;\n phrase: string;\n derivationPath: string;\n};\n\nconst getWalletMethodsForChain = async ({\n apis,\n rpcUrl,\n chain,\n phrase,\n ethplorerApiKey,\n covalentApiKey,\n blockchairApiKey,\n swapkitApiKey,\n derivationPath,\n stagenet,\n}: Params) => {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.Base:\n case Chain.BinanceSmartChain:\n case Chain.Ethereum:\n case Chain.Optimism:\n case Chain.Polygon: {\n const { getProvider, getToolboxByChain } = await import(\"@swapkit/toolbox-evm\");\n const { HDNodeWallet } = await import(\"ethers\");\n\n const api = apis?.[chain];\n\n const apiKey = pickEvmApiKey({\n chain,\n nonEthApiKey: covalentApiKey,\n ethApiKey: ethplorerApiKey,\n });\n const provider = getProvider(chain, rpcUrl);\n const wallet = HDNodeWallet.fromPhrase(phrase).connect(provider);\n const params = { api, apiKey, provider, signer: wallet };\n\n return { address: wallet.address, walletMethods: getToolboxByChain(chain)(params) };\n }\n\n case Chain.BitcoinCash: {\n const { BCHToolbox } = await import(\"@swapkit/toolbox-utxo\");\n\n const api = apis?.[chain];\n\n const toolbox = BCHToolbox({ rpcUrl, apiKey: blockchairApiKey, apiClient: api });\n const keys = await toolbox.createKeysForPath({ phrase, derivationPath });\n const address = toolbox.getAddressFromKeys(keys);\n\n function signTransaction({ builder, utxos }: Awaited<ReturnType<typeof toolbox.buildBCHTx>>) {\n utxos.forEach((utxo, index) => {\n builder.sign(index, keys, undefined, 0x41, (utxo.witnessUtxo as Witness).value);\n });\n\n return builder.build();\n }\n\n const walletMethods = {\n ...toolbox,\n transfer: (\n params: UTXOWalletTransferParams<\n Awaited<ReturnType<typeof toolbox.buildBCHTx>>,\n TransactionType\n >,\n ) => toolbox.transfer({ ...params, from: address, signTransaction }),\n };\n\n return { address, walletMethods };\n }\n\n case Chain.Bitcoin:\n case Chain.Dash:\n case Chain.Dogecoin:\n case Chain.Litecoin: {\n const { getToolboxByChain } = await import(\"@swapkit/toolbox-utxo\");\n\n const api = apis?.[chain];\n\n const toolbox = getToolboxByChain(chain)({\n rpcUrl,\n apiKey: blockchairApiKey,\n apiClient: api,\n });\n\n const keys = toolbox.createKeysForPath({ phrase, derivationPath });\n const address = toolbox.getAddressFromKeys(keys);\n\n return {\n address,\n walletMethods: {\n ...toolbox,\n transfer: (params: UTXOTransferParams) =>\n toolbox.transfer({\n ...params,\n from: address,\n signTransaction: (psbt: Psbt) => psbt.signAllInputs(keys),\n }),\n },\n };\n }\n\n case Chain.Cosmos:\n case Chain.Kujira: {\n const { getToolboxByChain } = await import(\"@swapkit/toolbox-cosmos\");\n\n const api = apis?.[chain];\n\n const toolbox = getToolboxByChain(chain)({ server: api, stagenet, swapkitApiKey });\n const address = await toolbox.getAddressFromMnemonic(phrase);\n const signer = await toolbox.getSigner(phrase);\n\n const transfer = (params: TransferParams) => toolbox.transfer({ ...params, signer });\n\n return { address, walletMethods: { ...toolbox, transfer } };\n }\n\n case Chain.Maya:\n case Chain.THORChain: {\n const { getToolboxByChain } = await import(\"@swapkit/toolbox-cosmos\");\n\n const api = apis?.[chain];\n\n const toolbox = getToolboxByChain(chain)({ server: api, stagenet });\n const signer = await toolbox.getSigner(phrase);\n const address = await toolbox.getAddressFromMnemonic(phrase);\n\n return {\n address,\n walletMethods: {\n ...toolbox,\n deposit: ({ assetValue, memo }: DepositParam) =>\n toolbox.deposit({ assetValue, memo, from: address, signer }),\n transfer: (params: TransferParams) =>\n toolbox.transfer({ ...params, from: address, signer }),\n signMessage: async (message: string) => {\n const privateKey = await toolbox.createPrivateKeyFromPhrase(phrase);\n return toolbox.signWithPrivateKey({ privateKey, message });\n },\n },\n };\n }\n\n case Chain.Polkadot:\n case Chain.Chainflip: {\n const { Network, getToolboxByChain, createKeyring } = await import(\n \"@swapkit/toolbox-substrate\"\n );\n\n const signer = await createKeyring(phrase, Network[chain].prefix);\n const toolbox = await getToolboxByChain(chain, {\n signer,\n providerUrl:\n chain === Chain.Polkadot ? getRPCUrl(Chain.Polkadot) : getRPCUrl(Chain.Chainflip),\n });\n\n return { address: signer.address, walletMethods: toolbox };\n }\n\n case Chain.Solana: {\n const { SOLToolbox, createKeysForPath } = await import(\"@swapkit/toolbox-solana\");\n const signer = createKeysForPath({ phrase, derivationPath });\n const toolbox = SOLToolbox({ rpcUrl, signer });\n\n return {\n address: toolbox.getAddressFromKeys(signer),\n walletMethods: {\n ...toolbox,\n },\n };\n }\n\n case Chain.Ripple: {\n const { XRPToolbox, createSigner } = await import(\"@swapkit/toolbox-ripple\");\n const signer = createSigner(phrase);\n const toolbox = await XRPToolbox({ rpcUrl, signer });\n\n return {\n address: signer.address,\n walletMethods: {\n ...toolbox,\n },\n };\n }\n\n case Chain.Tron: {\n const { createTronToolbox } = await import(\"@swapkit/toolbox-tron\");\n const toolbox = await createTronToolbox({ rpcUrl, phrase, derivationPath });\n\n return {\n address: await toolbox.getAddress(),\n walletMethods: {\n ...toolbox,\n },\n };\n }\n\n default:\n throw new Error(`Unsupported chain ${chain}`);\n }\n};\n\nfunction connectKeystore({\n addChain,\n apis,\n rpcUrls,\n config: {\n thorswapApiKey,\n covalentApiKey,\n ethplorerApiKey,\n blockchairApiKey,\n stagenet,\n swapkitApiKey,\n },\n}: ConnectWalletParams) {\n return async function connectKeystore(\n chains: Chain[],\n phrase: string,\n derivationPathMapOrIndex?: { [chain in Chain]?: DerivationPathArray } | number,\n ) {\n setRequestClientConfig({ apiKey: thorswapApiKey });\n\n const supportedChains = filterSupportedChains(\n chains,\n KEYSTORE_SUPPORTED_CHAINS,\n WalletOption.KEYSTORE,\n );\n\n const promises = supportedChains.map(async (chain) => {\n const derivationPathIndex =\n typeof derivationPathMapOrIndex === \"number\" ? derivationPathMapOrIndex : 0;\n\n const derivationPathFromMap =\n derivationPathMapOrIndex && typeof derivationPathMapOrIndex === \"object\"\n ? derivationPathMapOrIndex[chain]\n : undefined;\n\n const [first, second, third, fourth, fifth] = NetworkDerivationPath[chain];\n\n const derivationPathArray: DerivationPathArray =\n derivationPathFromMap ||\n updatedLastIndex(\n chain === Chain.Solana\n ? [first, second, third, fourth]\n : [first, second, third, fourth, fifth],\n derivationPathIndex,\n );\n\n const derivationPath = derivationPathToString(derivationPathArray);\n\n const { address, walletMethods } = await getWalletMethodsForChain({\n derivationPath,\n chain,\n apis,\n rpcUrl: rpcUrls[chain],\n covalentApiKey,\n ethplorerApiKey,\n phrase,\n blockchairApiKey,\n swapkitApiKey,\n stagenet,\n });\n\n addChain({\n ...walletMethods,\n chain,\n address,\n balance: [],\n walletType: WalletOption.KEYSTORE,\n });\n });\n\n await Promise.all(promises);\n\n return true;\n };\n}\n\nexport const keystoreWallet = { connectKeystore } as const;\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "F425DBF2EA345D2164756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "00C6AC00FAD0BE3364756E2164756E21",
10
10
  "names": []
11
11
  }
package/package.json CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "dependencies": {
3
3
  "@scure/bip39": "1.5.4",
4
- "@swapkit/helpers": "2.10.3",
5
- "@swapkit/toolbox-cosmos": "1.11.19",
6
- "@swapkit/toolbox-evm": "1.11.5",
7
- "@swapkit/toolbox-radix": "1.3.14",
8
- "@swapkit/toolbox-ripple": "1.0.20",
9
- "@swapkit/toolbox-solana": "1.6.15",
10
- "@swapkit/toolbox-substrate": "1.4.14",
11
- "@swapkit/toolbox-utxo": "1.4.14",
4
+ "@swapkit/helpers": "2.10.4",
5
+ "@swapkit/toolbox-cosmos": "1.11.20",
6
+ "@swapkit/toolbox-evm": "1.11.6",
7
+ "@swapkit/toolbox-radix": "1.3.15",
8
+ "@swapkit/toolbox-ripple": "1.0.21",
9
+ "@swapkit/toolbox-solana": "1.6.16",
10
+ "@swapkit/toolbox-substrate": "1.4.15",
11
+ "@swapkit/toolbox-tron": "0.0.3",
12
+ "@swapkit/toolbox-utxo": "1.4.15",
12
13
  "blakejs": "1.2.1",
13
14
  "micro-key-producer": "0.7.5"
14
15
  },
@@ -35,5 +36,5 @@
35
36
  },
36
37
  "type": "module",
37
38
  "types": "./src/index.ts",
38
- "version": "1.8.18"
39
+ "version": "1.8.20"
39
40
  }
package/src/keystore.ts CHANGED
@@ -32,6 +32,7 @@ const KEYSTORE_SUPPORTED_CHAINS = [
32
32
  Chain.Chainflip,
33
33
  Chain.Solana,
34
34
  Chain.Ripple,
35
+ Chain.Tron,
35
36
  ] as const;
36
37
 
37
38
  type KeystoreOptions = {
@@ -231,6 +232,18 @@ const getWalletMethodsForChain = async ({
231
232
  };
232
233
  }
233
234
 
235
+ case Chain.Tron: {
236
+ const { createTronToolbox } = await import("@swapkit/toolbox-tron");
237
+ const toolbox = await createTronToolbox({ rpcUrl, phrase, derivationPath });
238
+
239
+ return {
240
+ address: await toolbox.getAddress(),
241
+ walletMethods: {
242
+ ...toolbox,
243
+ },
244
+ };
245
+ }
246
+
234
247
  default:
235
248
  throw new Error(`Unsupported chain ${chain}`);
236
249
  }