@zubari/sdk 0.1.3 → 0.1.5

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.mjs CHANGED
@@ -4,7 +4,7 @@ import { mainnet, sepolia } from 'viem/chains';
4
4
  import { mnemonicToSeedSync } from '@scure/bip39';
5
5
  import '@scure/bip39/wordlists/english';
6
6
  import { HDKey } from '@scure/bip32';
7
- import { bech32 } from '@scure/base';
7
+ import { bech32, base58check } from '@scure/base';
8
8
  import { sha256 } from '@noble/hashes/sha256';
9
9
  import { ripemd160 } from '@noble/hashes/ripemd160';
10
10
  import { useMemo, useState, useCallback, useEffect } from 'react';
@@ -2407,59 +2407,6 @@ var require_bs58 = __commonJS({
2407
2407
  }
2408
2408
  });
2409
2409
 
2410
- // ../../node_modules/bs58check/base.js
2411
- var require_base = __commonJS({
2412
- "../../node_modules/bs58check/base.js"(exports$1, module) {
2413
- var base58 = require_bs58();
2414
- module.exports = function(checksumFn) {
2415
- function encode(payload) {
2416
- var payloadU8 = Uint8Array.from(payload);
2417
- var checksum = checksumFn(payloadU8);
2418
- var length = payloadU8.length + 4;
2419
- var both = new Uint8Array(length);
2420
- both.set(payloadU8, 0);
2421
- both.set(checksum.subarray(0, 4), payloadU8.length);
2422
- return base58.encode(both, length);
2423
- }
2424
- function decodeRaw(buffer) {
2425
- var payload = buffer.slice(0, -4);
2426
- var checksum = buffer.slice(-4);
2427
- var newChecksum = checksumFn(payload);
2428
- if (checksum[0] ^ newChecksum[0] | checksum[1] ^ newChecksum[1] | checksum[2] ^ newChecksum[2] | checksum[3] ^ newChecksum[3]) return;
2429
- return payload;
2430
- }
2431
- function decodeUnsafe(string) {
2432
- var buffer = base58.decodeUnsafe(string);
2433
- if (!buffer) return;
2434
- return decodeRaw(buffer);
2435
- }
2436
- function decode(string) {
2437
- var buffer = base58.decode(string);
2438
- var payload = decodeRaw(buffer);
2439
- if (!payload) throw new Error("Invalid checksum");
2440
- return payload;
2441
- }
2442
- return {
2443
- encode,
2444
- decode,
2445
- decodeUnsafe
2446
- };
2447
- };
2448
- }
2449
- });
2450
-
2451
- // ../../node_modules/bs58check/index.js
2452
- var require_bs58check = __commonJS({
2453
- "../../node_modules/bs58check/index.js"(exports$1, module) {
2454
- var { sha256: sha2562 } = __require("@noble/hashes/sha256");
2455
- var bs58checkBase = require_base();
2456
- function sha256x2(buffer) {
2457
- return sha2562(sha2562(buffer));
2458
- }
2459
- module.exports = bs58checkBase(sha256x2);
2460
- }
2461
- });
2462
-
2463
2410
  // src/config/networks.ts
2464
2411
  var NETWORKS = {
2465
2412
  bitcoin: {
@@ -3702,9 +3649,8 @@ function crc16(data) {
3702
3649
  }
3703
3650
  return crc;
3704
3651
  }
3705
- async function deriveTronAddress(seed) {
3652
+ function deriveTronAddress(seed) {
3706
3653
  try {
3707
- const bs58check = await Promise.resolve().then(() => __toESM(require_bs58check()));
3708
3654
  const hdNode = HDNodeWallet.fromPhrase(seed, void 0, DERIVATION_PATHS3.tron);
3709
3655
  const ethAddressHex = hdNode.address.slice(2).toLowerCase();
3710
3656
  const addressBytes = new Uint8Array(21);
@@ -3712,7 +3658,8 @@ async function deriveTronAddress(seed) {
3712
3658
  for (let i = 0; i < 20; i++) {
3713
3659
  addressBytes[i + 1] = parseInt(ethAddressHex.slice(i * 2, i * 2 + 2), 16);
3714
3660
  }
3715
- return bs58check.encode(Buffer.from(addressBytes));
3661
+ const tronBase58check = base58check(sha256);
3662
+ return tronBase58check.encode(addressBytes);
3716
3663
  } catch (error) {
3717
3664
  console.error("TRON address derivation failed:", error);
3718
3665
  throw error;
@@ -3762,10 +3709,14 @@ async function deriveAllAddresses(seed, network = "testnet") {
3762
3709
  } catch (e) {
3763
3710
  console.error("Spark derivation failed:", e);
3764
3711
  }
3765
- const [solResult, tonResult, tronResult] = await Promise.allSettled([
3712
+ try {
3713
+ addresses.tron = deriveTronAddress(seed);
3714
+ } catch (e) {
3715
+ console.error("TRON derivation failed:", e);
3716
+ }
3717
+ const [solResult, tonResult] = await Promise.allSettled([
3766
3718
  deriveSolanaAddress(seed),
3767
- deriveTonAddress(seed),
3768
- deriveTronAddress(seed)
3719
+ deriveTonAddress(seed)
3769
3720
  ]);
3770
3721
  if (solResult.status === "fulfilled") {
3771
3722
  addresses.solana = solResult.value;
@@ -3777,11 +3728,6 @@ async function deriveAllAddresses(seed, network = "testnet") {
3777
3728
  } else {
3778
3729
  console.error("TON derivation failed:", tonResult.reason);
3779
3730
  }
3780
- if (tronResult.status === "fulfilled") {
3781
- addresses.tron = tronResult.value;
3782
- } else {
3783
- console.error("TRON derivation failed:", tronResult.reason);
3784
- }
3785
3731
  return addresses;
3786
3732
  }
3787
3733
 
@@ -4293,6 +4239,61 @@ var WalletManager = class _WalletManager {
4293
4239
  } catch (error) {
4294
4240
  console.warn(`Failed to fetch ${chain} balance:`, error);
4295
4241
  }
4242
+ } else if (chain === "bitcoin") {
4243
+ const baseUrl = this.config.network === "mainnet" ? "https://blockstream.info/api" : "https://blockstream.info/testnet/api";
4244
+ try {
4245
+ const response = await fetch(`${baseUrl}/address/${address}`, {
4246
+ headers: { "Accept": "application/json" }
4247
+ });
4248
+ if (response.ok) {
4249
+ const data = await response.json();
4250
+ const chainFunded = data.chain_stats?.funded_txo_sum || 0;
4251
+ const chainSpent = data.chain_stats?.spent_txo_sum || 0;
4252
+ const mempoolFunded = data.mempool_stats?.funded_txo_sum || 0;
4253
+ const mempoolSpent = data.mempool_stats?.spent_txo_sum || 0;
4254
+ const satoshis = chainFunded - chainSpent + (mempoolFunded - mempoolSpent);
4255
+ balance = (satoshis / 1e8).toFixed(8);
4256
+ }
4257
+ } catch (error) {
4258
+ console.warn(`Failed to fetch ${chain} balance:`, error);
4259
+ }
4260
+ } else if (chain === "solana") {
4261
+ const rpcUrl = this.config.network === "mainnet" ? "https://api.mainnet-beta.solana.com" : "https://api.devnet.solana.com";
4262
+ try {
4263
+ const response = await fetch(rpcUrl, {
4264
+ method: "POST",
4265
+ headers: { "Content-Type": "application/json" },
4266
+ body: JSON.stringify({
4267
+ jsonrpc: "2.0",
4268
+ id: 1,
4269
+ method: "getBalance",
4270
+ params: [address]
4271
+ })
4272
+ });
4273
+ if (response.ok) {
4274
+ const data = await response.json();
4275
+ if (data.result?.value !== void 0) {
4276
+ balance = (data.result.value / 1e9).toFixed(9);
4277
+ }
4278
+ }
4279
+ } catch (error) {
4280
+ console.warn(`Failed to fetch ${chain} balance:`, error);
4281
+ }
4282
+ } else if (chain === "tron") {
4283
+ const baseUrl = this.config.network === "mainnet" ? "https://api.trongrid.io" : "https://api.shasta.trongrid.io";
4284
+ try {
4285
+ const response = await fetch(`${baseUrl}/v1/accounts/${address}`, {
4286
+ headers: { "Accept": "application/json" }
4287
+ });
4288
+ if (response.ok) {
4289
+ const data = await response.json();
4290
+ if (data.data?.[0]?.balance !== void 0) {
4291
+ balance = (data.data[0].balance / 1e6).toFixed(6);
4292
+ }
4293
+ }
4294
+ } catch (error) {
4295
+ console.warn(`Failed to fetch ${chain} balance:`, error);
4296
+ }
4296
4297
  }
4297
4298
  return {
4298
4299
  chain,