@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.cjs CHANGED
@@ -106949,12 +106949,128 @@ var UserModule = class {
106949
106949
  }
106950
106950
  };
106951
106951
 
106952
+ // src/core/config/weblockFujiDeployment.ts
106953
+ var WEBLOCK_FUJI_DEPLOYMENT = {
106954
+ chainId: 43113,
106955
+ network: "fuji",
106956
+ rpcUrl: "https://api.avax-test.network/ext/bc/C/rpc",
106957
+ explorerBaseUrl: "https://testnet.snowtrace.io",
106958
+ treasury: "0x67394081091BDE902b38774076a332240Aa14b27",
106959
+ tokens: {
106960
+ USDR: {
106961
+ address: "0xbc3A31c1788624E5bFf69cdC3a1E7405A01C6De2",
106962
+ decimals: 18,
106963
+ symbol: "USDR"
106964
+ },
106965
+ USDT: {
106966
+ address: "0x4CcEF90D730AB83366a3936FA301536649E105Ed",
106967
+ decimals: 6,
106968
+ symbol: "USDT"
106969
+ },
106970
+ WFT: {
106971
+ address: "0x64529efA2bF566794d051f7531B53EE9413E7794",
106972
+ decimals: 18,
106973
+ symbol: "WFT"
106974
+ }
106975
+ },
106976
+ contracts: {
106977
+ rbtFactory: "0x6bF159f474094915805c9768c533c6c24737F8a3",
106978
+ investRouter: "0x41c1EeD232D29FCc19c09b0e26A70e4B8c9b34e6",
106979
+ product1: {
106980
+ offeringId: 1n,
106981
+ seriesId: 1n,
106982
+ rbtAsset: "0x6173a35cBB99B82c51c6A0e0265C06B7955Eb017",
106983
+ unitPriceWei: 1000000000000000000n,
106984
+ // 1 USDR
106985
+ paymentToken: "0xbc3A31c1788624E5bFf69cdC3a1E7405A01C6De2"
106986
+ // USDR
106987
+ }
106988
+ }
106989
+ };
106990
+
106952
106991
  // src/modules/wallet.ts
106992
+ var FUJI_CHAIN_ID = WEBLOCK_FUJI_DEPLOYMENT.chainId;
106993
+ var FUJI_USDR_ADDRESS = WEBLOCK_FUJI_DEPLOYMENT.tokens.USDR.address.toLowerCase();
106994
+ var FUJI_RBT_ADDRESS = WEBLOCK_FUJI_DEPLOYMENT.contracts.product1.rbtAsset.toLowerCase();
106995
+ var FUJI_RBT_SERIES_ID = Number(
106996
+ WEBLOCK_FUJI_DEPLOYMENT.contracts.product1.seriesId
106997
+ );
106953
106998
  var WalletModule = class {
106954
106999
  constructor(options, core) {
106955
107000
  this.options = options;
106956
107001
  this.core = core;
106957
107002
  }
107003
+ pickDefaultNetwork(availableNetworks) {
107004
+ if (!availableNetworks.length) return null;
107005
+ const fuji = availableNetworks.find(
107006
+ (network) => network.chainId === FUJI_CHAIN_ID && (network.isTestnet || (network.name || "").toLowerCase().includes("fuji") || (network.rpcUrl || "").toLowerCase().includes("avax-test"))
107007
+ ) ?? null;
107008
+ if (fuji) return fuji;
107009
+ return availableNetworks.find((network) => !network.isTestnet) ?? availableNetworks[0];
107010
+ }
107011
+ withDefaultRegisteredCoins(network, registered) {
107012
+ if (!network) return registered;
107013
+ const map = /* @__PURE__ */ new Map();
107014
+ for (const coin of registered) {
107015
+ if (!coin?.contractAddress) continue;
107016
+ map.set(coin.contractAddress.toLowerCase(), {
107017
+ ...coin,
107018
+ contractAddress: coin.contractAddress.toLowerCase()
107019
+ });
107020
+ }
107021
+ if (network.chainId === FUJI_CHAIN_ID && !map.has(FUJI_USDR_ADDRESS)) {
107022
+ map.set(FUJI_USDR_ADDRESS, {
107023
+ id: "default-fuji-usdr",
107024
+ blockchainId: network.id,
107025
+ name: "WeBlock USD Settlement Token",
107026
+ symbol: "USDR",
107027
+ contractAddress: FUJI_USDR_ADDRESS,
107028
+ decimals: 18
107029
+ });
107030
+ }
107031
+ return Array.from(map.values());
107032
+ }
107033
+ decodeHexBalanceToDecimal(value) {
107034
+ if (!value) return "0";
107035
+ try {
107036
+ return BigInt(value).toString();
107037
+ } catch {
107038
+ return "0";
107039
+ }
107040
+ }
107041
+ async getFujiRbtTokenInfo(networkId, walletAddress) {
107042
+ try {
107043
+ const rawHex = await this.core.asset.getERC1155Balance({
107044
+ networkId,
107045
+ tokenAddress: FUJI_RBT_ADDRESS,
107046
+ walletAddress,
107047
+ tokenId: FUJI_RBT_SERIES_ID
107048
+ });
107049
+ const raw = this.decodeHexBalanceToDecimal(rawHex);
107050
+ const balance = {
107051
+ raw,
107052
+ formatted: TokenAmount.fromWei(raw, 0),
107053
+ decimals: 0,
107054
+ symbol: "RBT"
107055
+ };
107056
+ return {
107057
+ address: FUJI_RBT_ADDRESS,
107058
+ name: "RBT Property Token",
107059
+ symbol: "RBT",
107060
+ decimals: 0,
107061
+ balance,
107062
+ totalSupply: {
107063
+ raw: "0",
107064
+ formatted: "0",
107065
+ decimals: 0,
107066
+ symbol: "RBT"
107067
+ }
107068
+ };
107069
+ } catch (error) {
107070
+ console.warn("Failed to load default RBT balance:", error);
107071
+ return null;
107072
+ }
107073
+ }
106958
107074
  async getInfo() {
106959
107075
  try {
106960
107076
  console.log("1. \uB85C\uADF8\uC778 \uC0C1\uD0DC \uD655\uC778 \uC2DC\uC791");
@@ -106980,7 +107096,13 @@ var WalletModule = class {
106980
107096
  console.log("\uD604\uC7AC \uB124\uD2B8\uC6CC\uD06C:", currentNetwork);
106981
107097
  console.log("\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uB124\uD2B8\uC6CC\uD06C:", availableNetworks);
106982
107098
  if (!currentNetwork) {
106983
- const defaultNetwork = availableNetworks.find((n5) => !n5.isTestnet) || availableNetworks[0];
107099
+ const defaultNetwork = this.pickDefaultNetwork(availableNetworks);
107100
+ if (!defaultNetwork) {
107101
+ throw new SDKError(
107102
+ "\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uB124\uD2B8\uC6CC\uD06C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4",
107103
+ "NETWORK_ERROR" /* NETWORK_ERROR */
107104
+ );
107105
+ }
106984
107106
  await this.core.network.switchNetwork(defaultNetwork.id);
106985
107107
  console.log("\uAE30\uBCF8 \uB124\uD2B8\uC6CC\uD06C\uB85C \uC124\uC815:", defaultNetwork.name);
106986
107108
  }
@@ -107006,12 +107128,14 @@ var WalletModule = class {
107006
107128
  let tokens = [];
107007
107129
  try {
107008
107130
  const registered = await this.core.asset.getRegisteredCoins(network.id);
107009
- if (registered?.length) {
107010
- const unique = new Map(
107011
- registered.map((c5) => [c5.contractAddress.toLowerCase(), c5])
107012
- );
107013
- tokens = await Promise.all(
107014
- Array.from(unique.values()).map(async (coin) => {
107131
+ const targetCoins = this.withDefaultRegisteredCoins(
107132
+ network,
107133
+ registered ?? []
107134
+ );
107135
+ const tokenMap = /* @__PURE__ */ new Map();
107136
+ if (targetCoins.length) {
107137
+ const results = await Promise.allSettled(
107138
+ targetCoins.map(async (coin) => {
107015
107139
  const full = await this.core.asset.getTokenFullInfo({
107016
107140
  networkId: network.id,
107017
107141
  tokenAddress: coin.contractAddress,
@@ -107026,7 +107150,24 @@ var WalletModule = class {
107026
107150
  };
107027
107151
  })
107028
107152
  );
107153
+ results.forEach((result) => {
107154
+ if (result.status === "fulfilled") {
107155
+ tokenMap.set(
107156
+ result.value.address.toLowerCase(),
107157
+ result.value
107158
+ );
107159
+ return;
107160
+ }
107161
+ console.warn("Registered token load failed:", result.reason);
107162
+ });
107163
+ }
107164
+ if (network.chainId === FUJI_CHAIN_ID) {
107165
+ const rbtToken = await this.getFujiRbtTokenInfo(network.id, address);
107166
+ if (rbtToken) {
107167
+ tokenMap.set(rbtToken.address.toLowerCase(), rbtToken);
107168
+ }
107029
107169
  }
107170
+ tokens = Array.from(tokenMap.values());
107030
107171
  } catch (e7) {
107031
107172
  console.warn("Registered token load failed:", e7);
107032
107173
  tokens = [];