@zubari/sdk 0.1.26 → 0.1.27
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/{WalletManager-D1ohlVea.d.ts → WalletManager-CR1B7vN_.d.ts} +140 -48
- package/dist/{WalletManager-CGIuecnp.d.mts → WalletManager-Cdk81G55.d.mts} +140 -48
- package/dist/{index-CR7fLCYO.d.ts → index-BztGRtFG.d.ts} +1 -1
- package/dist/{index-Dh2ukHnr.d.mts → index-OooXWNfP.d.mts} +1 -1
- package/dist/index.d.mts +4 -3
- package/dist/index.d.ts +4 -3
- package/dist/index.js +59 -15
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +53 -9
- 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 +59 -15
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +53 -9
- package/dist/react/index.mjs.map +1 -1
- package/dist/services/index.js +9 -9
- package/dist/services/index.js.map +1 -1
- package/dist/services/index.mjs +3 -3
- 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 +59 -15
- package/dist/wallet/index.js.map +1 -1
- package/dist/wallet/index.mjs +53 -9
- package/dist/wallet/index.mjs.map +1 -1
- package/package.json +2 -3
package/dist/wallet/index.js
CHANGED
|
@@ -4,11 +4,11 @@ var ethers = require('ethers');
|
|
|
4
4
|
var viem = require('viem');
|
|
5
5
|
var chains = require('viem/chains');
|
|
6
6
|
var bip39 = require('@scure/bip39');
|
|
7
|
-
var
|
|
7
|
+
var english = require('@scure/bip39/wordlists/english');
|
|
8
8
|
var bip32 = require('@scure/bip32');
|
|
9
9
|
var base = require('@scure/base');
|
|
10
|
-
var
|
|
11
|
-
var
|
|
10
|
+
var sha256 = require('@noble/hashes/sha256');
|
|
11
|
+
var ripemd160 = require('@noble/hashes/ripemd160');
|
|
12
12
|
|
|
13
13
|
// src/config/networks.ts
|
|
14
14
|
var NETWORKS = {
|
|
@@ -98,6 +98,11 @@ var NETWORKS = {
|
|
|
98
98
|
}
|
|
99
99
|
};
|
|
100
100
|
var TESTNET_NETWORKS = {
|
|
101
|
+
bitcoin: {
|
|
102
|
+
name: "Bitcoin Testnet",
|
|
103
|
+
rpcUrl: "https://blockstream.info/testnet/api",
|
|
104
|
+
explorerUrl: "https://mempool.space/testnet"
|
|
105
|
+
},
|
|
101
106
|
ethereum: {
|
|
102
107
|
name: "Sepolia",
|
|
103
108
|
chainId: 11155111,
|
|
@@ -911,7 +916,7 @@ function deriveBitcoinAddress(seed, network = "testnet") {
|
|
|
911
916
|
if (!child.publicKey) {
|
|
912
917
|
throw new Error("Failed to derive public key");
|
|
913
918
|
}
|
|
914
|
-
const pubKeyHash =
|
|
919
|
+
const pubKeyHash = ripemd160.ripemd160(sha256.sha256(child.publicKey));
|
|
915
920
|
const witnessVersion = 0;
|
|
916
921
|
const words = base.bech32.toWords(pubKeyHash);
|
|
917
922
|
words.unshift(witnessVersion);
|
|
@@ -952,7 +957,7 @@ async function deriveTonAddress(seed) {
|
|
|
952
957
|
const publicKey = keypair.publicKey;
|
|
953
958
|
const workchain = 0;
|
|
954
959
|
const flags = 17;
|
|
955
|
-
const hash =
|
|
960
|
+
const hash = sha256.sha256(publicKey);
|
|
956
961
|
const addressData = new Uint8Array(34);
|
|
957
962
|
addressData[0] = flags;
|
|
958
963
|
addressData[1] = workchain;
|
|
@@ -989,7 +994,7 @@ function deriveTronAddress(seed) {
|
|
|
989
994
|
for (let i = 0; i < 20; i++) {
|
|
990
995
|
addressBytes[i + 1] = parseInt(ethAddressHex.slice(i * 2, i * 2 + 2), 16);
|
|
991
996
|
}
|
|
992
|
-
const tronBase58check = base.base58check(
|
|
997
|
+
const tronBase58check = base.base58check(sha256.sha256);
|
|
993
998
|
return tronBase58check.encode(addressBytes);
|
|
994
999
|
} catch (error) {
|
|
995
1000
|
console.error("TRON address derivation failed:", error);
|
|
@@ -1004,7 +1009,7 @@ function deriveSparkAddress(seed, network = "testnet") {
|
|
|
1004
1009
|
if (!child.publicKey) {
|
|
1005
1010
|
throw new Error("Failed to derive public key");
|
|
1006
1011
|
}
|
|
1007
|
-
const pubKeyHash =
|
|
1012
|
+
const pubKeyHash = ripemd160.ripemd160(sha256.sha256(child.publicKey));
|
|
1008
1013
|
const witnessVersion = 0;
|
|
1009
1014
|
const words = base.bech32.toWords(pubKeyHash);
|
|
1010
1015
|
words.unshift(witnessVersion);
|
|
@@ -1062,10 +1067,10 @@ async function deriveAllAddresses(seed, network = "testnet") {
|
|
|
1062
1067
|
return addresses;
|
|
1063
1068
|
}
|
|
1064
1069
|
function isValidSeed(seed) {
|
|
1065
|
-
return bip39.validateMnemonic(seed,
|
|
1070
|
+
return bip39.validateMnemonic(seed, english.wordlist);
|
|
1066
1071
|
}
|
|
1067
1072
|
function generateSeedPhrase() {
|
|
1068
|
-
return bip39.generateMnemonic(
|
|
1073
|
+
return bip39.generateMnemonic(english.wordlist);
|
|
1069
1074
|
}
|
|
1070
1075
|
|
|
1071
1076
|
// src/services/ZubariWdkService.ts
|
|
@@ -1843,6 +1848,33 @@ var WalletManager = class _WalletManager {
|
|
|
1843
1848
|
console.warn("Failed to save addresses to storage:", error);
|
|
1844
1849
|
}
|
|
1845
1850
|
}
|
|
1851
|
+
/**
|
|
1852
|
+
* Normalize an address value - extract string from object format if needed
|
|
1853
|
+
* Handles both string addresses and object format {chain, address, path}
|
|
1854
|
+
*/
|
|
1855
|
+
normalizeAddress(value) {
|
|
1856
|
+
if (typeof value === "string") {
|
|
1857
|
+
return value;
|
|
1858
|
+
}
|
|
1859
|
+
if (value && typeof value === "object" && "address" in value) {
|
|
1860
|
+
const addr = value.address;
|
|
1861
|
+
return typeof addr === "string" ? addr : null;
|
|
1862
|
+
}
|
|
1863
|
+
return null;
|
|
1864
|
+
}
|
|
1865
|
+
/**
|
|
1866
|
+
* Normalize all addresses in an object - extract strings from object format
|
|
1867
|
+
*/
|
|
1868
|
+
normalizeAddresses(addresses) {
|
|
1869
|
+
const normalized = {};
|
|
1870
|
+
for (const [chain, value] of Object.entries(addresses)) {
|
|
1871
|
+
const addr = this.normalizeAddress(value);
|
|
1872
|
+
if (addr) {
|
|
1873
|
+
normalized[chain] = addr;
|
|
1874
|
+
}
|
|
1875
|
+
}
|
|
1876
|
+
return normalized;
|
|
1877
|
+
}
|
|
1846
1878
|
/**
|
|
1847
1879
|
* Load derived addresses from storage
|
|
1848
1880
|
*/
|
|
@@ -1850,8 +1882,11 @@ var WalletManager = class _WalletManager {
|
|
|
1850
1882
|
try {
|
|
1851
1883
|
const stored = await this.storage.getItem(STORAGE_KEYS.DERIVED_ADDRESSES);
|
|
1852
1884
|
if (stored) {
|
|
1853
|
-
const
|
|
1854
|
-
console.log("
|
|
1885
|
+
const rawAddresses = JSON.parse(stored);
|
|
1886
|
+
console.log("[WalletManager] Raw addresses from storage:", rawAddresses);
|
|
1887
|
+
const addresses = this.normalizeAddresses(rawAddresses);
|
|
1888
|
+
console.log("[WalletManager] Normalized addresses:", addresses);
|
|
1889
|
+
await this.saveAddressesToStorage(addresses);
|
|
1855
1890
|
return addresses;
|
|
1856
1891
|
}
|
|
1857
1892
|
} catch (error) {
|
|
@@ -1889,8 +1924,15 @@ var WalletManager = class _WalletManager {
|
|
|
1889
1924
|
* Returns cached address or null - use deriveAllAddressesAsync to derive addresses
|
|
1890
1925
|
*/
|
|
1891
1926
|
getAddressForChain(chain) {
|
|
1892
|
-
|
|
1893
|
-
|
|
1927
|
+
const cachedValue = this.derivedAddresses[chain];
|
|
1928
|
+
if (cachedValue) {
|
|
1929
|
+
console.log(`[WalletManager] getAddressForChain(${chain}) cached value:`, cachedValue, "type:", typeof cachedValue);
|
|
1930
|
+
const addr = this.normalizeAddress(cachedValue);
|
|
1931
|
+
console.log(`[WalletManager] getAddressForChain(${chain}) normalized:`, addr);
|
|
1932
|
+
if (addr) {
|
|
1933
|
+
this.derivedAddresses[chain] = addr;
|
|
1934
|
+
return addr;
|
|
1935
|
+
}
|
|
1894
1936
|
}
|
|
1895
1937
|
if (chain === "ethereum" && this.currentSeed) {
|
|
1896
1938
|
this.derivedAddresses[chain] = _WalletManager.deriveAddressForChain(this.currentSeed, chain);
|
|
@@ -1902,7 +1944,7 @@ var WalletManager = class _WalletManager {
|
|
|
1902
1944
|
* Get all derived addresses
|
|
1903
1945
|
*/
|
|
1904
1946
|
getAllAddresses() {
|
|
1905
|
-
return
|
|
1947
|
+
return this.normalizeAddresses(this.derivedAddresses);
|
|
1906
1948
|
}
|
|
1907
1949
|
/**
|
|
1908
1950
|
* Set the selected chain
|
|
@@ -1944,6 +1986,7 @@ var WalletManager = class _WalletManager {
|
|
|
1944
1986
|
let balance = "0";
|
|
1945
1987
|
if (chain === "ethereum") {
|
|
1946
1988
|
const viemChain = this.config.network === "mainnet" ? chains.mainnet : chains.sepolia;
|
|
1989
|
+
console.log(`[WalletManager] Fetching ${chain} balance for ${address} using RPC: ${this.config.rpcUrl}`);
|
|
1947
1990
|
const client = viem.createPublicClient({
|
|
1948
1991
|
chain: viemChain,
|
|
1949
1992
|
transport: viem.http(this.config.rpcUrl, {
|
|
@@ -1958,8 +2001,9 @@ var WalletManager = class _WalletManager {
|
|
|
1958
2001
|
address
|
|
1959
2002
|
});
|
|
1960
2003
|
balance = viem.formatEther(rawBalance);
|
|
2004
|
+
console.log(`[WalletManager] ${chain} balance fetched: ${balance} (raw: ${rawBalance})`);
|
|
1961
2005
|
} catch (error) {
|
|
1962
|
-
console.
|
|
2006
|
+
console.error(`[WalletManager] Failed to fetch ${chain} balance from ${this.config.rpcUrl}:`, error);
|
|
1963
2007
|
}
|
|
1964
2008
|
} else if (chain === "bitcoin") {
|
|
1965
2009
|
const isMainnet = this.config.network === "mainnet" || address.startsWith("bc1") || address.startsWith("1") || address.startsWith("3");
|