@weblock-wallet/sdk 0.1.74 → 0.1.76

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
@@ -106908,12 +106908,128 @@ var UserModule = class {
106908
106908
  }
106909
106909
  };
106910
106910
 
106911
+ // src/core/config/weblockFujiDeployment.ts
106912
+ var WEBLOCK_FUJI_DEPLOYMENT = {
106913
+ chainId: 43113,
106914
+ network: "fuji",
106915
+ rpcUrl: "https://api.avax-test.network/ext/bc/C/rpc",
106916
+ explorerBaseUrl: "https://testnet.snowtrace.io",
106917
+ treasury: "0x67394081091BDE902b38774076a332240Aa14b27",
106918
+ tokens: {
106919
+ USDR: {
106920
+ address: "0xbc3A31c1788624E5bFf69cdC3a1E7405A01C6De2",
106921
+ decimals: 18,
106922
+ symbol: "USDR"
106923
+ },
106924
+ USDT: {
106925
+ address: "0x4CcEF90D730AB83366a3936FA301536649E105Ed",
106926
+ decimals: 6,
106927
+ symbol: "USDT"
106928
+ },
106929
+ WFT: {
106930
+ address: "0x64529efA2bF566794d051f7531B53EE9413E7794",
106931
+ decimals: 18,
106932
+ symbol: "WFT"
106933
+ }
106934
+ },
106935
+ contracts: {
106936
+ rbtFactory: "0x6bF159f474094915805c9768c533c6c24737F8a3",
106937
+ investRouter: "0x41c1EeD232D29FCc19c09b0e26A70e4B8c9b34e6",
106938
+ product1: {
106939
+ offeringId: 1n,
106940
+ seriesId: 1n,
106941
+ rbtAsset: "0x6173a35cBB99B82c51c6A0e0265C06B7955Eb017",
106942
+ unitPriceWei: 1000000000000000000n,
106943
+ // 1 USDR
106944
+ paymentToken: "0xbc3A31c1788624E5bFf69cdC3a1E7405A01C6De2"
106945
+ // USDR
106946
+ }
106947
+ }
106948
+ };
106949
+
106911
106950
  // src/modules/wallet.ts
106951
+ var FUJI_CHAIN_ID = WEBLOCK_FUJI_DEPLOYMENT.chainId;
106952
+ var FUJI_USDR_ADDRESS = WEBLOCK_FUJI_DEPLOYMENT.tokens.USDR.address.toLowerCase();
106953
+ var FUJI_RBT_ADDRESS = WEBLOCK_FUJI_DEPLOYMENT.contracts.product1.rbtAsset.toLowerCase();
106954
+ var FUJI_RBT_SERIES_ID = Number(
106955
+ WEBLOCK_FUJI_DEPLOYMENT.contracts.product1.seriesId
106956
+ );
106912
106957
  var WalletModule = class {
106913
106958
  constructor(options, core) {
106914
106959
  this.options = options;
106915
106960
  this.core = core;
106916
106961
  }
106962
+ pickDefaultNetwork(availableNetworks) {
106963
+ if (!availableNetworks.length) return null;
106964
+ const fuji = availableNetworks.find(
106965
+ (network) => network.chainId === FUJI_CHAIN_ID && (network.isTestnet || (network.name || "").toLowerCase().includes("fuji") || (network.rpcUrl || "").toLowerCase().includes("avax-test"))
106966
+ ) ?? null;
106967
+ if (fuji) return fuji;
106968
+ return availableNetworks.find((network) => !network.isTestnet) ?? availableNetworks[0];
106969
+ }
106970
+ withDefaultRegisteredCoins(network, registered) {
106971
+ if (!network) return registered;
106972
+ const map = /* @__PURE__ */ new Map();
106973
+ for (const coin of registered) {
106974
+ if (!coin?.contractAddress) continue;
106975
+ map.set(coin.contractAddress.toLowerCase(), {
106976
+ ...coin,
106977
+ contractAddress: coin.contractAddress.toLowerCase()
106978
+ });
106979
+ }
106980
+ if (network.chainId === FUJI_CHAIN_ID && !map.has(FUJI_USDR_ADDRESS)) {
106981
+ map.set(FUJI_USDR_ADDRESS, {
106982
+ id: "default-fuji-usdr",
106983
+ blockchainId: network.id,
106984
+ name: "WeBlock USD Settlement Token",
106985
+ symbol: "USDR",
106986
+ contractAddress: FUJI_USDR_ADDRESS,
106987
+ decimals: 18
106988
+ });
106989
+ }
106990
+ return Array.from(map.values());
106991
+ }
106992
+ decodeHexBalanceToDecimal(value) {
106993
+ if (!value) return "0";
106994
+ try {
106995
+ return BigInt(value).toString();
106996
+ } catch {
106997
+ return "0";
106998
+ }
106999
+ }
107000
+ async getFujiRbtTokenInfo(networkId, walletAddress) {
107001
+ try {
107002
+ const rawHex = await this.core.asset.getERC1155Balance({
107003
+ networkId,
107004
+ tokenAddress: FUJI_RBT_ADDRESS,
107005
+ walletAddress,
107006
+ tokenId: FUJI_RBT_SERIES_ID
107007
+ });
107008
+ const raw = this.decodeHexBalanceToDecimal(rawHex);
107009
+ const balance = {
107010
+ raw,
107011
+ formatted: TokenAmount.fromWei(raw, 0),
107012
+ decimals: 0,
107013
+ symbol: "RBT"
107014
+ };
107015
+ return {
107016
+ address: FUJI_RBT_ADDRESS,
107017
+ name: "RBT Property Token",
107018
+ symbol: "RBT",
107019
+ decimals: 0,
107020
+ balance,
107021
+ totalSupply: {
107022
+ raw: "0",
107023
+ formatted: "0",
107024
+ decimals: 0,
107025
+ symbol: "RBT"
107026
+ }
107027
+ };
107028
+ } catch (error) {
107029
+ console.warn("Failed to load default RBT balance:", error);
107030
+ return null;
107031
+ }
107032
+ }
106917
107033
  async getInfo() {
106918
107034
  try {
106919
107035
  console.log("1. \uB85C\uADF8\uC778 \uC0C1\uD0DC \uD655\uC778 \uC2DC\uC791");
@@ -106939,7 +107055,13 @@ var WalletModule = class {
106939
107055
  console.log("\uD604\uC7AC \uB124\uD2B8\uC6CC\uD06C:", currentNetwork);
106940
107056
  console.log("\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uB124\uD2B8\uC6CC\uD06C:", availableNetworks);
106941
107057
  if (!currentNetwork) {
106942
- const defaultNetwork = availableNetworks.find((n5) => !n5.isTestnet) || availableNetworks[0];
107058
+ const defaultNetwork = this.pickDefaultNetwork(availableNetworks);
107059
+ if (!defaultNetwork) {
107060
+ throw new SDKError(
107061
+ "\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uB124\uD2B8\uC6CC\uD06C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4",
107062
+ "NETWORK_ERROR" /* NETWORK_ERROR */
107063
+ );
107064
+ }
106943
107065
  await this.core.network.switchNetwork(defaultNetwork.id);
106944
107066
  console.log("\uAE30\uBCF8 \uB124\uD2B8\uC6CC\uD06C\uB85C \uC124\uC815:", defaultNetwork.name);
106945
107067
  }
@@ -106965,12 +107087,14 @@ var WalletModule = class {
106965
107087
  let tokens = [];
106966
107088
  try {
106967
107089
  const registered = await this.core.asset.getRegisteredCoins(network.id);
106968
- if (registered?.length) {
106969
- const unique = new Map(
106970
- registered.map((c5) => [c5.contractAddress.toLowerCase(), c5])
106971
- );
106972
- tokens = await Promise.all(
106973
- Array.from(unique.values()).map(async (coin) => {
107090
+ const targetCoins = this.withDefaultRegisteredCoins(
107091
+ network,
107092
+ registered ?? []
107093
+ );
107094
+ const tokenMap = /* @__PURE__ */ new Map();
107095
+ if (targetCoins.length) {
107096
+ const results = await Promise.allSettled(
107097
+ targetCoins.map(async (coin) => {
106974
107098
  const full = await this.core.asset.getTokenFullInfo({
106975
107099
  networkId: network.id,
106976
107100
  tokenAddress: coin.contractAddress,
@@ -106985,7 +107109,24 @@ var WalletModule = class {
106985
107109
  };
106986
107110
  })
106987
107111
  );
107112
+ results.forEach((result) => {
107113
+ if (result.status === "fulfilled") {
107114
+ tokenMap.set(
107115
+ result.value.address.toLowerCase(),
107116
+ result.value
107117
+ );
107118
+ return;
107119
+ }
107120
+ console.warn("Registered token load failed:", result.reason);
107121
+ });
107122
+ }
107123
+ if (network.chainId === FUJI_CHAIN_ID) {
107124
+ const rbtToken = await this.getFujiRbtTokenInfo(network.id, address);
107125
+ if (rbtToken) {
107126
+ tokenMap.set(rbtToken.address.toLowerCase(), rbtToken);
107127
+ }
106988
107128
  }
107129
+ tokens = Array.from(tokenMap.values());
106989
107130
  } catch (e7) {
106990
107131
  console.warn("Registered token load failed:", e7);
106991
107132
  tokens = [];