@t2000/sdk 5.4.0 → 5.5.0

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.
@@ -1,4 +1,4 @@
1
- export { B as BalanceResponse, C as CLOCK_ID, a as COIN_REGISTRY, b as ClassifyBalanceChange, c as ClassifyResult, d as CoinMeta, D as DEFAULT_NETWORK, e as DepositInfo, E as ETH_TYPE, f as ExtractedTransfer, G as GAS_RESERVE_MIN, I as IKA_TYPE, K as KNOWN_TARGETS, g as KeypairSigner, L as LABEL_PATTERNS, h as LOFI_TYPE, M as MANIFEST_TYPE, i as MIST_PER_SUI, N as NAVX_TYPE, O as OVERLAY_FEE_RATE, j as OverlayFeeConfig, P as PayOptions, k as PayResult, S as STABLE_ASSETS, l as SUI_DECIMALS, m as SUI_TYPE, n as SUPPORTED_ASSETS, o as SendResult, p as SimulationResult, q as StableAsset, r as SuiHolding, s as SuiRpcTxBlock, t as SupportedAsset, u as SwapRouteResult, T as T2000Error, v as T2000ErrorCode, w as T2000ErrorData, x as T2000_OVERLAY_FEE_WALLET, y as TOKEN_MAP, z as TransactionLeg, A as TransactionRecord, F as TransactionSigner, H as TxDirection, U as USDC_DECIMALS, J as USDC_TYPE, Q as USDE_TYPE, R as USDSUI_TYPE, V as USDT_TYPE, W as WAL_TYPE, X as WBTC_TYPE, Z as ZkLoginProof, Y as ZkLoginSigner, _ as buildSwapTx, $ as classifyAction, a0 as classifyLabel, a1 as classifyTransaction, a2 as executeTx, a3 as extractAllUserLegs, a4 as extractTransferDetails, a5 as extractTxCommands, a6 as extractTxSender, a7 as fallbackLabel, a8 as findSwapRoute, a9 as formatAssetAmount, aa as formatSui, ab as formatUsd, ac as getDecimals, ad as getDecimalsForCoinType, ae as mapMoveAbortCode, af as mapWalletError, ag as mistToSui, ah as parseSuiRpcTx, ai as payWithMpp, aj as rawToStable, ak as rawToUsdc, al as refineLendingLabel, am as resolveSymbol, an as resolveTokenType, ao as stableToRaw, ap as suiToMist, aq as truncateAddress, ar as usdcToRaw, as as validateAddress } from './simulate-BTIIpnXc.cjs';
1
+ export { B as BalanceResponse, C as CLOCK_ID, a as COIN_REGISTRY, b as ClassifyBalanceChange, c as ClassifyResult, d as CoinMeta, D as DEFAULT_NETWORK, e as DepositInfo, E as ETH_TYPE, f as ExtractedTransfer, G as GAS_RESERVE_MIN, I as IKA_TYPE, K as KNOWN_TARGETS, g as KeypairSigner, L as LABEL_PATTERNS, h as LOFI_TYPE, M as MANIFEST_TYPE, i as MIST_PER_SUI, N as NAVX_TYPE, O as OVERLAY_FEE_RATE, j as OverlayFeeConfig, P as PayOptions, k as PayResult, S as STABLE_ASSETS, l as SUI_DECIMALS, m as SUI_TYPE, n as SUPPORTED_ASSETS, o as SendResult, p as SimulationResult, q as StableAsset, r as SuiHolding, s as SuiRpcTxBlock, t as SupportedAsset, u as SwapRouteResult, T as T2000Error, v as T2000ErrorCode, w as T2000ErrorData, x as T2000_OVERLAY_FEE_WALLET, y as TOKEN_MAP, z as TransactionLeg, A as TransactionRecord, F as TransactionSigner, H as TxDirection, U as USDC_DECIMALS, J as USDC_TYPE, Q as USDE_TYPE, R as USDSUI_TYPE, V as USDT_TYPE, W as WAL_TYPE, X as WBTC_TYPE, Z as ZkLoginProof, Y as ZkLoginSigner, _ as buildSwapTx, $ as classifyAction, a0 as classifyLabel, a1 as classifyTransaction, a2 as executeTx, a3 as extractAllUserLegs, a4 as extractTransferDetails, a5 as extractTxCommands, a6 as extractTxSender, a7 as fallbackLabel, a8 as findSwapRoute, a9 as formatAssetAmount, aa as formatSui, ab as formatUsd, ac as getDecimals, ad as getDecimalsForCoinType, ae as mapMoveAbortCode, af as mapWalletError, ag as mistToSui, ah as parseSuiRpcTx, ai as payWithMpp, aj as rawToStable, ak as rawToUsdc, al as refineLendingLabel, am as resolveSymbol, an as resolveTokenType, ao as stableToRaw, ap as suiToMist, aq as truncateAddress, ar as usdcToRaw, as as validateAddress } from './simulate-KETPmlDo.cjs';
2
2
  import '@mysten/sui/keypairs/ed25519';
3
3
  import '@mysten/sui/grpc';
4
4
  import '@mysten/sui/client';
package/dist/browser.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { B as BalanceResponse, C as CLOCK_ID, a as COIN_REGISTRY, b as ClassifyBalanceChange, c as ClassifyResult, d as CoinMeta, D as DEFAULT_NETWORK, e as DepositInfo, E as ETH_TYPE, f as ExtractedTransfer, G as GAS_RESERVE_MIN, I as IKA_TYPE, K as KNOWN_TARGETS, g as KeypairSigner, L as LABEL_PATTERNS, h as LOFI_TYPE, M as MANIFEST_TYPE, i as MIST_PER_SUI, N as NAVX_TYPE, O as OVERLAY_FEE_RATE, j as OverlayFeeConfig, P as PayOptions, k as PayResult, S as STABLE_ASSETS, l as SUI_DECIMALS, m as SUI_TYPE, n as SUPPORTED_ASSETS, o as SendResult, p as SimulationResult, q as StableAsset, r as SuiHolding, s as SuiRpcTxBlock, t as SupportedAsset, u as SwapRouteResult, T as T2000Error, v as T2000ErrorCode, w as T2000ErrorData, x as T2000_OVERLAY_FEE_WALLET, y as TOKEN_MAP, z as TransactionLeg, A as TransactionRecord, F as TransactionSigner, H as TxDirection, U as USDC_DECIMALS, J as USDC_TYPE, Q as USDE_TYPE, R as USDSUI_TYPE, V as USDT_TYPE, W as WAL_TYPE, X as WBTC_TYPE, Z as ZkLoginProof, Y as ZkLoginSigner, _ as buildSwapTx, $ as classifyAction, a0 as classifyLabel, a1 as classifyTransaction, a2 as executeTx, a3 as extractAllUserLegs, a4 as extractTransferDetails, a5 as extractTxCommands, a6 as extractTxSender, a7 as fallbackLabel, a8 as findSwapRoute, a9 as formatAssetAmount, aa as formatSui, ab as formatUsd, ac as getDecimals, ad as getDecimalsForCoinType, ae as mapMoveAbortCode, af as mapWalletError, ag as mistToSui, ah as parseSuiRpcTx, ai as payWithMpp, aj as rawToStable, ak as rawToUsdc, al as refineLendingLabel, am as resolveSymbol, an as resolveTokenType, ao as stableToRaw, ap as suiToMist, aq as truncateAddress, ar as usdcToRaw, as as validateAddress } from './simulate-BTIIpnXc.js';
1
+ export { B as BalanceResponse, C as CLOCK_ID, a as COIN_REGISTRY, b as ClassifyBalanceChange, c as ClassifyResult, d as CoinMeta, D as DEFAULT_NETWORK, e as DepositInfo, E as ETH_TYPE, f as ExtractedTransfer, G as GAS_RESERVE_MIN, I as IKA_TYPE, K as KNOWN_TARGETS, g as KeypairSigner, L as LABEL_PATTERNS, h as LOFI_TYPE, M as MANIFEST_TYPE, i as MIST_PER_SUI, N as NAVX_TYPE, O as OVERLAY_FEE_RATE, j as OverlayFeeConfig, P as PayOptions, k as PayResult, S as STABLE_ASSETS, l as SUI_DECIMALS, m as SUI_TYPE, n as SUPPORTED_ASSETS, o as SendResult, p as SimulationResult, q as StableAsset, r as SuiHolding, s as SuiRpcTxBlock, t as SupportedAsset, u as SwapRouteResult, T as T2000Error, v as T2000ErrorCode, w as T2000ErrorData, x as T2000_OVERLAY_FEE_WALLET, y as TOKEN_MAP, z as TransactionLeg, A as TransactionRecord, F as TransactionSigner, H as TxDirection, U as USDC_DECIMALS, J as USDC_TYPE, Q as USDE_TYPE, R as USDSUI_TYPE, V as USDT_TYPE, W as WAL_TYPE, X as WBTC_TYPE, Z as ZkLoginProof, Y as ZkLoginSigner, _ as buildSwapTx, $ as classifyAction, a0 as classifyLabel, a1 as classifyTransaction, a2 as executeTx, a3 as extractAllUserLegs, a4 as extractTransferDetails, a5 as extractTxCommands, a6 as extractTxSender, a7 as fallbackLabel, a8 as findSwapRoute, a9 as formatAssetAmount, aa as formatSui, ab as formatUsd, ac as getDecimals, ad as getDecimalsForCoinType, ae as mapMoveAbortCode, af as mapWalletError, ag as mistToSui, ah as parseSuiRpcTx, ai as payWithMpp, aj as rawToStable, ak as rawToUsdc, al as refineLendingLabel, am as resolveSymbol, an as resolveTokenType, ao as stableToRaw, ap as suiToMist, aq as truncateAddress, ar as usdcToRaw, as as validateAddress } from './simulate-KETPmlDo.js';
2
2
  import '@mysten/sui/keypairs/ed25519';
3
3
  import '@mysten/sui/grpc';
4
4
  import '@mysten/sui/client';
package/dist/index.cjs CHANGED
@@ -1295,8 +1295,7 @@ function addSendToTx(tx, coin, recipient) {
1295
1295
  const validRecipient = validateAddress(recipient);
1296
1296
  tx.transferObjects([coin], validRecipient);
1297
1297
  }
1298
-
1299
- // src/wallet/balance.ts
1298
+ init_token_registry();
1300
1299
  var SUI_PRICE_FALLBACK = 1;
1301
1300
  var _cachedSuiPrice = 0;
1302
1301
  var _priceLastFetched = 0;
@@ -1329,30 +1328,67 @@ async function fetchSuiPrice(client) {
1329
1328
  }
1330
1329
  return _cachedSuiPrice || SUI_PRICE_FALLBACK;
1331
1330
  }
1331
+ function safeNorm(coinType) {
1332
+ try {
1333
+ return utils.normalizeStructTag(coinType);
1334
+ } catch {
1335
+ return coinType;
1336
+ }
1337
+ }
1338
+ var SUI_TYPE_NORM = safeNorm(SUPPORTED_ASSETS.SUI.type);
1339
+ var STABLE_BY_NORM = (() => {
1340
+ const m = {};
1341
+ for (const asset of STABLE_ASSETS) m[safeNorm(SUPPORTED_ASSETS[asset].type)] = asset;
1342
+ return m;
1343
+ })();
1332
1344
  async function queryBalance(client, address) {
1333
- const stableBalancePromises = STABLE_ASSETS.map(
1334
- (asset) => client.core.getBalance({ owner: address, coinType: SUPPORTED_ASSETS[asset].type }).then((b) => ({ asset, amount: Number(b.balance.balance) / 10 ** SUPPORTED_ASSETS[asset].decimals })).catch(() => ({ asset, amount: 0 }))
1335
- );
1336
- const [suiBalance, suiPriceUsd, ...stableResults] = await Promise.all([
1337
- client.core.getBalance({ owner: address, coinType: SUPPORTED_ASSETS.SUI.type }),
1338
- fetchSuiPrice(client),
1339
- ...stableBalancePromises
1340
- ]);
1345
+ const held = [];
1346
+ let cursor;
1347
+ do {
1348
+ const page = await client.core.listBalances({ owner: address, cursor: cursor ?? void 0 });
1349
+ for (const b of page.balances) {
1350
+ const raw = BigInt(b.balance);
1351
+ if (raw > 0n) held.push({ coinType: b.coinType, raw });
1352
+ }
1353
+ cursor = page.hasNextPage ? page.cursor : null;
1354
+ } while (cursor);
1355
+ const suiPriceUsd = await fetchSuiPrice(client);
1341
1356
  const stables = {};
1357
+ for (const asset of STABLE_ASSETS) stables[asset] = 0;
1342
1358
  let totalStables = 0;
1343
- for (const { asset, amount } of stableResults) {
1344
- stables[asset] = amount;
1345
- totalStables += amount;
1359
+ let suiAmount = 0;
1360
+ const otherCoins = [];
1361
+ for (const { coinType, raw } of held) {
1362
+ const norm = safeNorm(coinType);
1363
+ if (norm === SUI_TYPE_NORM) {
1364
+ suiAmount = Number(raw) / Number(MIST_PER_SUI);
1365
+ } else if (STABLE_BY_NORM[norm]) {
1366
+ const asset = STABLE_BY_NORM[norm];
1367
+ const amount = Number(raw) / 10 ** SUPPORTED_ASSETS[asset].decimals;
1368
+ stables[asset] = amount;
1369
+ totalStables += amount;
1370
+ } else {
1371
+ otherCoins.push({ coinType, raw });
1372
+ }
1346
1373
  }
1347
- const suiAmount = Number(suiBalance.balance.balance) / Number(MIST_PER_SUI);
1374
+ const tokens = await Promise.all(
1375
+ otherCoins.map(async ({ coinType, raw }) => {
1376
+ const decimals = await resolveCoinDecimals(client, coinType);
1377
+ return {
1378
+ coinType,
1379
+ symbol: resolveSymbol(coinType),
1380
+ amount: Number(raw) / 10 ** decimals,
1381
+ usdValue: null
1382
+ };
1383
+ })
1384
+ );
1385
+ tokens.sort((a, b) => a.symbol.localeCompare(b.symbol));
1348
1386
  const suiUsdValue = suiAmount * suiPriceUsd;
1349
1387
  return {
1350
1388
  stables,
1351
1389
  available: totalStables,
1352
- sui: {
1353
- amount: suiAmount,
1354
- usdValue: suiUsdValue
1355
- },
1390
+ sui: { amount: suiAmount, usdValue: suiUsdValue },
1391
+ tokens,
1356
1392
  totalUsd: totalStables + suiUsdValue
1357
1393
  };
1358
1394
  }