@zubari/sdk 0.5.6 → 0.5.8
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/{TransactionService-DbNDRzXh.d.ts → TransactionService-BEkgF1T6.d.ts} +5 -9
- package/dist/{TransactionService-Cmw33HXX.d.mts → TransactionService-CF_C3Kqm.d.mts} +5 -9
- package/dist/{WalletManager-CeLlZo2y.d.ts → WalletManager-Csfokchy.d.ts} +135 -48
- package/dist/{WalletManager-DIx8nENh.d.mts → WalletManager-i2BBu6uz.d.mts} +135 -48
- package/dist/{contracts-JfZDzaV7.d.ts → contracts-BHI5gorb.d.ts} +1 -1
- package/dist/{contracts-pugJnFzl.d.mts → contracts-ITj7CkiV.d.mts} +1 -1
- package/dist/index.d.mts +5 -4
- package/dist/index.d.ts +5 -4
- package/dist/index.js +69 -77
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +56 -64
- package/dist/index.mjs.map +1 -1
- package/dist/react/index.d.mts +4 -3
- package/dist/react/index.d.ts +4 -3
- package/dist/react/index.js +69 -77
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +56 -64
- package/dist/react/index.mjs.map +1 -1
- package/dist/services/index.d.mts +1 -1
- package/dist/services/index.d.ts +1 -1
- package/dist/services/index.js +59 -73
- package/dist/services/index.js.map +1 -1
- package/dist/services/index.mjs +46 -60
- package/dist/services/index.mjs.map +1 -1
- package/dist/wallet/index.d.mts +4 -3
- package/dist/wallet/index.d.ts +4 -3
- package/dist/wallet/index.js +69 -77
- package/dist/wallet/index.js.map +1 -1
- package/dist/wallet/index.mjs +56 -64
- package/dist/wallet/index.mjs.map +1 -1
- package/package.json +5 -4
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { HDNodeWallet, Wallet } from 'ethers';
|
|
2
|
+
import { mnemonicToSeedSync, validateMnemonic, generateMnemonic } from '@scure/bip39';
|
|
3
|
+
import { wordlist } from '@scure/bip39/wordlists/english';
|
|
4
|
+
import { HDKey } from '@scure/bip32';
|
|
5
|
+
import { bech32, base58check } from '@scure/base';
|
|
6
|
+
import { sha256 } from '@noble/hashes/sha256';
|
|
7
|
+
import { ripemd160 } from '@noble/hashes/ripemd160';
|
|
2
8
|
import { createPublicClient, http, formatEther, getAddress } from 'viem';
|
|
3
9
|
import { mainnet, sepolia } from 'viem/chains';
|
|
4
10
|
|
|
@@ -604,37 +610,12 @@ var DERIVATION_PATHS2 = {
|
|
|
604
610
|
solana: `${DERIVATION_PATHS.solana}/0'`,
|
|
605
611
|
spark: `${DERIVATION_PATHS.spark}/0`
|
|
606
612
|
};
|
|
607
|
-
var _crypto = null;
|
|
608
|
-
async function loadCrypto() {
|
|
609
|
-
if (_crypto) return _crypto;
|
|
610
|
-
const [bip39, bip39Words, bip32, scureBase, sha256Mod, ripemd160Mod] = await Promise.all([
|
|
611
|
-
import('@scure/bip39'),
|
|
612
|
-
import('@scure/bip39/wordlists/english'),
|
|
613
|
-
import('@scure/bip32'),
|
|
614
|
-
import('@scure/base'),
|
|
615
|
-
import('@noble/hashes/sha256'),
|
|
616
|
-
import('@noble/hashes/ripemd160')
|
|
617
|
-
]);
|
|
618
|
-
_crypto = {
|
|
619
|
-
mnemonicToSeedSync: bip39.mnemonicToSeedSync,
|
|
620
|
-
validateMnemonic: bip39.validateMnemonic,
|
|
621
|
-
generateMnemonic: bip39.generateMnemonic,
|
|
622
|
-
wordlist: bip39Words.wordlist,
|
|
623
|
-
HDKey: bip32.HDKey,
|
|
624
|
-
bech32: scureBase.bech32,
|
|
625
|
-
base58check: scureBase.base58check,
|
|
626
|
-
sha256: sha256Mod.sha256,
|
|
627
|
-
ripemd160: ripemd160Mod.ripemd160
|
|
628
|
-
};
|
|
629
|
-
return _crypto;
|
|
630
|
-
}
|
|
631
613
|
function deriveEthereumAddress(seed) {
|
|
632
614
|
const hdNode = HDNodeWallet.fromPhrase(seed, void 0, DERIVATION_PATHS2.ethereum);
|
|
633
615
|
return hdNode.address;
|
|
634
616
|
}
|
|
635
|
-
|
|
617
|
+
function deriveBitcoinAddress(seed, network = "mainnet") {
|
|
636
618
|
try {
|
|
637
|
-
const { mnemonicToSeedSync, HDKey, sha256, ripemd160, bech32 } = await loadCrypto();
|
|
638
619
|
const seedBytes = mnemonicToSeedSync(seed);
|
|
639
620
|
const hdKey = HDKey.fromMasterSeed(seedBytes);
|
|
640
621
|
const path = network === "testnet" ? DERIVATION_PATHS2.bitcoin_testnet : DERIVATION_PATHS2.bitcoin_mainnet;
|
|
@@ -656,14 +637,13 @@ async function deriveBitcoinAddress(seed, network = "mainnet") {
|
|
|
656
637
|
}
|
|
657
638
|
async function deriveSolanaAddress(seed) {
|
|
658
639
|
try {
|
|
659
|
-
const [
|
|
660
|
-
loadCrypto(),
|
|
640
|
+
const [ed25519, nacl, bs58Module] = await Promise.all([
|
|
661
641
|
import('ed25519-hd-key'),
|
|
662
642
|
import('tweetnacl'),
|
|
663
643
|
import('bs58')
|
|
664
644
|
]);
|
|
665
645
|
const bs58 = bs58Module.default || bs58Module;
|
|
666
|
-
const seedBytes =
|
|
646
|
+
const seedBytes = mnemonicToSeedSync(seed);
|
|
667
647
|
const derived = ed25519.derivePath(DERIVATION_PATHS2.solana, Buffer.from(seedBytes).toString("hex"));
|
|
668
648
|
const keypair = nacl.sign.keyPair.fromSeed(new Uint8Array(derived.key));
|
|
669
649
|
return bs58.encode(keypair.publicKey);
|
|
@@ -674,18 +654,17 @@ async function deriveSolanaAddress(seed) {
|
|
|
674
654
|
}
|
|
675
655
|
async function deriveTonAddress(seed) {
|
|
676
656
|
try {
|
|
677
|
-
const [
|
|
678
|
-
loadCrypto(),
|
|
657
|
+
const [ed25519, nacl] = await Promise.all([
|
|
679
658
|
import('ed25519-hd-key'),
|
|
680
659
|
import('tweetnacl')
|
|
681
660
|
]);
|
|
682
|
-
const seedBytes =
|
|
661
|
+
const seedBytes = mnemonicToSeedSync(seed);
|
|
683
662
|
const derived = ed25519.derivePath(DERIVATION_PATHS2.ton, Buffer.from(seedBytes).toString("hex"));
|
|
684
663
|
const keypair = nacl.sign.keyPair.fromSeed(new Uint8Array(derived.key));
|
|
685
664
|
const publicKey = keypair.publicKey;
|
|
686
665
|
const workchain = 0;
|
|
687
666
|
const flags = 17;
|
|
688
|
-
const hash =
|
|
667
|
+
const hash = sha256(publicKey);
|
|
689
668
|
const addressData = new Uint8Array(34);
|
|
690
669
|
addressData[0] = flags;
|
|
691
670
|
addressData[1] = workchain;
|
|
@@ -713,9 +692,8 @@ function crc16(data) {
|
|
|
713
692
|
}
|
|
714
693
|
return crc;
|
|
715
694
|
}
|
|
716
|
-
|
|
695
|
+
function deriveTronAddress(seed) {
|
|
717
696
|
try {
|
|
718
|
-
const { sha256, base58check } = await loadCrypto();
|
|
719
697
|
const hdNode = HDNodeWallet.fromPhrase(seed, void 0, DERIVATION_PATHS2.tron);
|
|
720
698
|
const ethAddressHex = hdNode.address.slice(2).toLowerCase();
|
|
721
699
|
const addressBytes = new Uint8Array(21);
|
|
@@ -730,9 +708,8 @@ async function deriveTronAddress(seed) {
|
|
|
730
708
|
throw error;
|
|
731
709
|
}
|
|
732
710
|
}
|
|
733
|
-
|
|
711
|
+
function deriveSparkAddress(seed, network = "mainnet") {
|
|
734
712
|
try {
|
|
735
|
-
const { mnemonicToSeedSync, HDKey, sha256, ripemd160, bech32 } = await loadCrypto();
|
|
736
713
|
const seedBytes = mnemonicToSeedSync(seed);
|
|
737
714
|
const hdKey = HDKey.fromMasterSeed(seedBytes);
|
|
738
715
|
const child = hdKey.derive(DERIVATION_PATHS2.spark);
|
|
@@ -760,37 +737,46 @@ async function deriveAllAddresses(seed, network = "mainnet") {
|
|
|
760
737
|
solana: null,
|
|
761
738
|
spark: null
|
|
762
739
|
};
|
|
763
|
-
await loadCrypto();
|
|
764
740
|
try {
|
|
765
741
|
addresses.ethereum = deriveEthereumAddress(seed);
|
|
766
742
|
} catch (e) {
|
|
767
743
|
console.error("ETH derivation failed:", e);
|
|
768
744
|
}
|
|
769
|
-
|
|
770
|
-
deriveBitcoinAddress(seed, network)
|
|
771
|
-
|
|
772
|
-
|
|
745
|
+
try {
|
|
746
|
+
addresses.bitcoin = deriveBitcoinAddress(seed, network);
|
|
747
|
+
} catch (e) {
|
|
748
|
+
console.error("BTC derivation failed:", e);
|
|
749
|
+
}
|
|
750
|
+
try {
|
|
751
|
+
addresses.spark = deriveSparkAddress(seed, network);
|
|
752
|
+
} catch (e) {
|
|
753
|
+
console.error("Spark derivation failed:", e);
|
|
754
|
+
}
|
|
755
|
+
try {
|
|
756
|
+
addresses.tron = deriveTronAddress(seed);
|
|
757
|
+
} catch (e) {
|
|
758
|
+
console.error("TRON derivation failed:", e);
|
|
759
|
+
}
|
|
760
|
+
const [solResult, tonResult] = await Promise.allSettled([
|
|
773
761
|
deriveSolanaAddress(seed),
|
|
774
762
|
deriveTonAddress(seed)
|
|
775
763
|
]);
|
|
776
|
-
if (
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
else
|
|
784
|
-
|
|
785
|
-
|
|
764
|
+
if (solResult.status === "fulfilled") {
|
|
765
|
+
addresses.solana = solResult.value;
|
|
766
|
+
} else {
|
|
767
|
+
console.error("SOL derivation failed:", solResult.reason);
|
|
768
|
+
}
|
|
769
|
+
if (tonResult.status === "fulfilled") {
|
|
770
|
+
addresses.ton = tonResult.value;
|
|
771
|
+
} else {
|
|
772
|
+
console.error("TON derivation failed:", tonResult.reason);
|
|
773
|
+
}
|
|
786
774
|
return addresses;
|
|
787
775
|
}
|
|
788
|
-
|
|
789
|
-
const { validateMnemonic, wordlist } = await loadCrypto();
|
|
776
|
+
function isValidSeed(seed) {
|
|
790
777
|
return validateMnemonic(seed, wordlist);
|
|
791
778
|
}
|
|
792
|
-
|
|
793
|
-
const { generateMnemonic, wordlist } = await loadCrypto();
|
|
779
|
+
function generateSeedPhrase() {
|
|
794
780
|
return generateMnemonic(wordlist);
|
|
795
781
|
}
|
|
796
782
|
|
|
@@ -1034,7 +1020,7 @@ var ZubariWdkService = class {
|
|
|
1034
1020
|
};
|
|
1035
1021
|
if (!addresses.spark) {
|
|
1036
1022
|
try {
|
|
1037
|
-
addresses.spark =
|
|
1023
|
+
addresses.spark = deriveSparkAddress(seed, this.config.network);
|
|
1038
1024
|
} catch (e) {
|
|
1039
1025
|
console.warn("Browser Spark derivation fallback failed:", e);
|
|
1040
1026
|
}
|
|
@@ -1270,13 +1256,13 @@ var ZubariWdkService = class {
|
|
|
1270
1256
|
address = deriveEthereumAddress(seed);
|
|
1271
1257
|
break;
|
|
1272
1258
|
case "bitcoin":
|
|
1273
|
-
address =
|
|
1259
|
+
address = deriveBitcoinAddress(seed, this.config.network);
|
|
1274
1260
|
break;
|
|
1275
1261
|
case "tron":
|
|
1276
|
-
address =
|
|
1262
|
+
address = deriveTronAddress(seed);
|
|
1277
1263
|
break;
|
|
1278
1264
|
case "spark":
|
|
1279
|
-
address =
|
|
1265
|
+
address = deriveSparkAddress(seed, this.config.network);
|
|
1280
1266
|
break;
|
|
1281
1267
|
case "solana":
|
|
1282
1268
|
address = await deriveSolanaAddress(seed);
|
|
@@ -2234,7 +2220,9 @@ var WalletManager = class _WalletManager {
|
|
|
2234
2220
|
storage: config.storage || createSecureStorage(),
|
|
2235
2221
|
enabledChains: config.enabledChains || SUPPORTED_CHAINS,
|
|
2236
2222
|
apiUrl: config.apiUrl || process.env.NEXT_PUBLIC_API_URL || "https://ckgwifsxka.us-east-2.awsapprunner.com",
|
|
2237
|
-
accessToken: config.accessToken
|
|
2223
|
+
accessToken: config.accessToken,
|
|
2224
|
+
chainRpcUrls: config.chainRpcUrls || {},
|
|
2225
|
+
tronApiKey: config.tronApiKey
|
|
2238
2226
|
};
|
|
2239
2227
|
this.storage = this.config.storage;
|
|
2240
2228
|
this.wdkService = getZubariWdkService({
|
|
@@ -2796,7 +2784,7 @@ var WalletManager = class _WalletManager {
|
|
|
2796
2784
|
}
|
|
2797
2785
|
}
|
|
2798
2786
|
} else if (chain === "solana") {
|
|
2799
|
-
const rpcUrl = this.config.network === "mainnet" ? "https://api.mainnet-beta.solana.com" : "https://api.devnet.solana.com";
|
|
2787
|
+
const rpcUrl = this.config.chainRpcUrls.solana || (this.config.network === "mainnet" ? "https://api.mainnet-beta.solana.com" : "https://api.devnet.solana.com");
|
|
2800
2788
|
try {
|
|
2801
2789
|
const response = await fetch(rpcUrl, {
|
|
2802
2790
|
method: "POST",
|
|
@@ -2853,8 +2841,12 @@ var WalletManager = class _WalletManager {
|
|
|
2853
2841
|
const tronConfig = getNetworkConfig("tron", this.config.network !== "mainnet");
|
|
2854
2842
|
const baseUrl = tronConfig.rpcUrl;
|
|
2855
2843
|
try {
|
|
2844
|
+
const tronHeaders = { "Accept": "application/json" };
|
|
2845
|
+
if (this.config.tronApiKey) {
|
|
2846
|
+
tronHeaders["TRON-PRO-API-KEY"] = this.config.tronApiKey;
|
|
2847
|
+
}
|
|
2856
2848
|
const response = await fetch(`${baseUrl}/v1/accounts/${address}`, {
|
|
2857
|
-
headers:
|
|
2849
|
+
headers: tronHeaders
|
|
2858
2850
|
});
|
|
2859
2851
|
if (response.ok) {
|
|
2860
2852
|
const data = await response.json();
|
|
@@ -2980,7 +2972,7 @@ var WalletManager = class _WalletManager {
|
|
|
2980
2972
|
if (result.status === "fulfilled") {
|
|
2981
2973
|
return result.value;
|
|
2982
2974
|
}
|
|
2983
|
-
console.
|
|
2975
|
+
console.warn(`Failed to fetch balance for ${chain}:`, result.reason);
|
|
2984
2976
|
const networkConfig = this.getChainConfig(chain);
|
|
2985
2977
|
return {
|
|
2986
2978
|
chain,
|