@ecency/wallets 1.5.9 → 1.5.11

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.
@@ -775,6 +775,7 @@ declare enum AssetOperation {
775
775
  WithdrawRoutes = "withdraw-routes",
776
776
  ClaimInterest = "claim-interest",
777
777
  Swap = "swap",
778
+ Convert = "convert",
778
779
  Gift = "gift",
779
780
  Promote = "promote",
780
781
  Claim = "claim",
@@ -1816,8 +1817,20 @@ declare function useWalletsCacheQuery(username?: string): _tanstack_react_query.
1816
1817
 
1817
1818
  interface VisionPortfolioWalletItem {
1818
1819
  symbol: string;
1819
- info: GeneralAssetInfo;
1820
- operations: AssetOperation[];
1820
+ name: string;
1821
+ title?: string;
1822
+ price?: number;
1823
+ accountBalance?: number;
1824
+ apr?: number;
1825
+ layer?: string;
1826
+ pendingRewards?: number;
1827
+ savings?: number;
1828
+ actions?: Array<{
1829
+ id: string;
1830
+ [key: string]: unknown;
1831
+ } | string>;
1832
+ fiatRate?: number;
1833
+ fiatCurrency?: string;
1821
1834
  }
1822
1835
  interface VisionPortfolioResponse {
1823
1836
  username: string;
@@ -1564,6 +1564,7 @@ var AssetOperation = /* @__PURE__ */ ((AssetOperation2) => {
1564
1564
  AssetOperation2["WithdrawRoutes"] = "withdraw-routes";
1565
1565
  AssetOperation2["ClaimInterest"] = "claim-interest";
1566
1566
  AssetOperation2["Swap"] = "swap";
1567
+ AssetOperation2["Convert"] = "convert";
1567
1568
  AssetOperation2["Gift"] = "gift";
1568
1569
  AssetOperation2["Promote"] = "promote";
1569
1570
  AssetOperation2["Claim"] = "claim";
@@ -2876,80 +2877,6 @@ function getAllTokensListQueryOptions(username) {
2876
2877
  }
2877
2878
  });
2878
2879
  }
2879
- var ACTION_ALIAS_MAP = {
2880
- "transfer-to-savings": "transfer-saving" /* TransferToSavings */,
2881
- "transfer-savings": "transfer-saving" /* TransferToSavings */,
2882
- "savings-transfer": "transfer-saving" /* TransferToSavings */,
2883
- "withdraw-from-savings": "withdraw-saving" /* WithdrawFromSavings */,
2884
- "withdraw-savings": "withdraw-saving" /* WithdrawFromSavings */,
2885
- "savings-withdraw": "withdraw-saving" /* WithdrawFromSavings */,
2886
- "transfer-from-savings": "withdraw-saving" /* WithdrawFromSavings */,
2887
- "powerup": "power-up" /* PowerUp */,
2888
- "power-down": "power-down" /* PowerDown */,
2889
- "powerdown": "power-down" /* PowerDown */,
2890
- "withdraw-vesting": "power-down" /* PowerDown */,
2891
- "hp-delegate": "delegate" /* Delegate */,
2892
- "delegate-hp": "delegate" /* Delegate */,
2893
- "delegate-power": "delegate" /* Delegate */,
2894
- "delegate-vesting-shares": "delegate" /* Delegate */,
2895
- "undelegate-power": "undelegate" /* Undelegate */,
2896
- "undelegate-token": "undelegate" /* Undelegate */,
2897
- "stake-token": "stake" /* Stake */,
2898
- "stake-power": "stake" /* Stake */,
2899
- "unstake-token": "unstake" /* Unstake */,
2900
- "unstake-power": "unstake" /* Unstake */,
2901
- "transfer-to-vesting": "power-up" /* PowerUp */,
2902
- "lock-liquidity": "lock" /* LockLiquidity */,
2903
- "lock-liq": "lock" /* LockLiquidity */,
2904
- "gift-points": "gift" /* Gift */,
2905
- "points-gift": "gift" /* Gift */,
2906
- "promote-post": "promote" /* Promote */,
2907
- "promote-entry": "promote" /* Promote */,
2908
- boost: "promote" /* Promote */,
2909
- convert: "swap" /* Swap */,
2910
- "swap-token": "swap" /* Swap */,
2911
- "swap_tokens": "swap" /* Swap */,
2912
- "claim-points": "claim" /* Claim */,
2913
- "claim-rewards": "claim" /* Claim */,
2914
- "buy-points": "buy" /* Buy */,
2915
- "ecency-point-transfer": "transfer" /* Transfer */,
2916
- "spkcc-spk-send": "transfer" /* Transfer */,
2917
- "withdraw-routes": "withdraw-routes" /* WithdrawRoutes */,
2918
- "withdrawroutes": "withdraw-routes" /* WithdrawRoutes */,
2919
- "claim-interest": "claim-interest" /* ClaimInterest */
2920
- };
2921
- var KNOWN_OPERATION_VALUES = new Map(
2922
- Object.values(AssetOperation).map((value) => [value, value])
2923
- );
2924
- var DERIVED_PART_KEY_MAP = {
2925
- liquid: ["liquid", "liquidBalance", "liquid_amount", "liquidTokens"],
2926
- savings: ["savings", "savingsBalance", "savings_amount"],
2927
- staked: ["staked", "stakedBalance", "staking", "stake", "power"],
2928
- delegated: ["delegated", "delegatedBalance", "delegationsOut"],
2929
- received: ["received", "receivedBalance", "delegationsIn"],
2930
- pending: [
2931
- "pending",
2932
- "pendingRewards",
2933
- "unclaimed",
2934
- "unclaimedBalance",
2935
- "pendingReward"
2936
- ]
2937
- };
2938
- var EXTRA_DATA_PART_KEY_MAP = {
2939
- delegated: "outgoing_delegations",
2940
- outgoing: "outgoing_delegations",
2941
- delegations_out: "outgoing_delegations",
2942
- delegated_hive_power: "outgoing_delegations",
2943
- delegated_hp: "outgoing_delegations",
2944
- received: "incoming_delegations",
2945
- incoming: "incoming_delegations",
2946
- delegations_in: "incoming_delegations",
2947
- received_hive_power: "incoming_delegations",
2948
- received_hp: "incoming_delegations",
2949
- powering_down: "pending_power_down",
2950
- power_down: "pending_power_down",
2951
- powering_down_hive_power: "pending_power_down"
2952
- };
2953
2880
  function normalizeString(value) {
2954
2881
  if (typeof value === "string") {
2955
2882
  const trimmed = value.trim();
@@ -2992,128 +2919,6 @@ function normalizeApr(value) {
2992
2919
  }
2993
2920
  return numeric.toString();
2994
2921
  }
2995
- function normalizeParts(rawParts) {
2996
- if (Array.isArray(rawParts)) {
2997
- const parsed = rawParts.map((item) => {
2998
- if (!item || typeof item !== "object") {
2999
- return void 0;
3000
- }
3001
- const name = normalizeString(
3002
- item.name ?? item.label ?? item.type ?? item.part
3003
- );
3004
- const balance = normalizeNumber(
3005
- item.balance ?? item.amount ?? item.value
3006
- );
3007
- if (!name || balance === void 0) {
3008
- return void 0;
3009
- }
3010
- return { name, balance };
3011
- }).filter((item) => Boolean(item));
3012
- return parsed.length ? parsed : void 0;
3013
- }
3014
- if (rawParts && typeof rawParts === "object") {
3015
- const parsed = Object.entries(rawParts).map(([name, amount]) => {
3016
- const balance = normalizeNumber(amount);
3017
- if (!name || balance === void 0) {
3018
- return void 0;
3019
- }
3020
- return { name, balance };
3021
- }).filter((item) => Boolean(item));
3022
- return parsed.length ? parsed : void 0;
3023
- }
3024
- return void 0;
3025
- }
3026
- function deriveParts(record) {
3027
- const derived = Object.entries(DERIVED_PART_KEY_MAP).map(([name, keys]) => {
3028
- for (const key of keys) {
3029
- const value = normalizeNumber(record[key]);
3030
- if (value !== void 0) {
3031
- return { name, balance: value };
3032
- }
3033
- }
3034
- return void 0;
3035
- }).filter((item) => Boolean(item));
3036
- return derived.length ? derived : void 0;
3037
- }
3038
- function normalizePartKey(value) {
3039
- return value.trim().toLowerCase().replace(/[\s-]+/g, "_");
3040
- }
3041
- function mergeParts(...sources) {
3042
- const order = [];
3043
- const values2 = /* @__PURE__ */ new Map();
3044
- for (const parts of sources) {
3045
- if (!parts) {
3046
- continue;
3047
- }
3048
- for (const part of parts) {
3049
- if (!part?.name || typeof part.balance !== "number") {
3050
- continue;
3051
- }
3052
- const existing = values2.get(part.name);
3053
- if (existing === void 0) {
3054
- order.push(part.name);
3055
- values2.set(part.name, part.balance);
3056
- } else {
3057
- values2.set(part.name, existing + part.balance);
3058
- }
3059
- }
3060
- }
3061
- return order.length ? order.map((name) => ({ name, balance: values2.get(name) })) : void 0;
3062
- }
3063
- function normalizeExtraDataParts(rawExtraData) {
3064
- const items = Array.isArray(rawExtraData) ? rawExtraData : rawExtraData && typeof rawExtraData === "object" ? Object.values(rawExtraData) : [];
3065
- const parts = items.map((item) => {
3066
- if (!item || typeof item !== "object") {
3067
- return void 0;
3068
- }
3069
- const record = item;
3070
- const keyCandidate = normalizeString(record.dataKey) ?? normalizeString(record.key) ?? normalizeString(record.name);
3071
- if (!keyCandidate) {
3072
- return void 0;
3073
- }
3074
- const canonical = normalizePartKey(keyCandidate);
3075
- const partName = EXTRA_DATA_PART_KEY_MAP[canonical];
3076
- if (!partName) {
3077
- return void 0;
3078
- }
3079
- const balance = normalizeNumber(
3080
- record.balance ?? record.amount ?? record.value ?? record.displayValue ?? record.text
3081
- );
3082
- if (balance === void 0) {
3083
- return void 0;
3084
- }
3085
- return { name: partName, balance: Math.abs(balance) };
3086
- }).filter((part) => Boolean(part));
3087
- return parts.length ? parts : void 0;
3088
- }
3089
- function normalizeActionKey(value) {
3090
- return value.trim().toLowerCase().replace(/[\s_]+/g, "-");
3091
- }
3092
- function mapActions(rawActions) {
3093
- if (!rawActions) {
3094
- return [];
3095
- }
3096
- const rawList = Array.isArray(rawActions) ? rawActions : [rawActions];
3097
- const result = [];
3098
- for (const raw of rawList) {
3099
- let candidate;
3100
- if (typeof raw === "string") {
3101
- candidate = raw;
3102
- } else if (raw && typeof raw === "object") {
3103
- const record = raw;
3104
- candidate = normalizeString(record.code) ?? normalizeString(record.id) ?? normalizeString(record.name) ?? normalizeString(record.action);
3105
- }
3106
- if (!candidate) {
3107
- continue;
3108
- }
3109
- const canonical = normalizeActionKey(candidate);
3110
- const operation = KNOWN_OPERATION_VALUES.get(canonical) ?? ACTION_ALIAS_MAP[canonical];
3111
- if (operation && !result.includes(operation)) {
3112
- result.push(operation);
3113
- }
3114
- }
3115
- return result;
3116
- }
3117
2922
  function parseToken(rawToken) {
3118
2923
  if (!rawToken || typeof rawToken !== "object") {
3119
2924
  return void 0;
@@ -3129,33 +2934,23 @@ function parseToken(rawToken) {
3129
2934
  const apr = normalizeApr(token.apr) ?? normalizeApr(token.aprPercent) ?? normalizeApr(token.metrics?.apr) ?? normalizeApr(
3130
2935
  token.metrics?.aprPercent
3131
2936
  );
3132
- const baseParts = normalizeParts(
3133
- token.parts ?? token.balances ?? token.sections ?? token.breakdown ?? token.accountBreakdown ?? token.walletParts
3134
- ) ?? deriveParts(token);
3135
- const parts = mergeParts(
3136
- baseParts,
3137
- normalizeExtraDataParts(
3138
- token.extraData ?? token.extra_data ?? token.extra ?? token.badges
3139
- )
3140
- );
3141
- const accountBalance = normalizeNumber(token.balance) ?? normalizeNumber(token.accountBalance) ?? normalizeNumber(token.totalBalance) ?? normalizeNumber(token.total) ?? normalizeNumber(token.amount) ?? (baseParts ? baseParts.reduce((total, part) => total + (part.balance ?? 0), 0) : parts ? parts.reduce((total, part) => total + (part.balance ?? 0), 0) : 0);
2937
+ const accountBalance = normalizeNumber(token.balance) ?? normalizeNumber(token.accountBalance) ?? normalizeNumber(token.totalBalance) ?? normalizeNumber(token.total) ?? normalizeNumber(token.amount) ?? 0;
3142
2938
  const layer = normalizeString(token.layer) ?? normalizeString(token.chain) ?? normalizeString(token.category) ?? normalizeString(token.type);
3143
2939
  const pendingRewards = normalizeNumber(token.pendingRewards);
2940
+ const savings = normalizeNumber(token.savings);
3144
2941
  return {
3145
2942
  symbol: normalizedSymbol,
3146
- info: {
3147
- name: normalizedSymbol,
3148
- title,
3149
- price,
3150
- accountBalance,
3151
- apr: apr ?? void 0,
3152
- layer: layer ?? void 0,
3153
- pendingRewards: pendingRewards ?? void 0,
3154
- parts
3155
- },
3156
- operations: mapActions(
3157
- token.actions ?? token.available_actions ?? token.availableActions ?? token.operations ?? token.supportedActions
3158
- )
2943
+ name: normalizedSymbol,
2944
+ title,
2945
+ price,
2946
+ accountBalance,
2947
+ apr: apr ? Number.parseFloat(apr) : void 0,
2948
+ layer: layer ?? void 0,
2949
+ pendingRewards: pendingRewards ?? void 0,
2950
+ savings: savings ?? void 0,
2951
+ actions: token.actions ?? token.available_actions ?? token.availableActions ?? token.operations ?? token.supportedActions,
2952
+ fiatRate: normalizeNumber(token.fiatRate) ?? void 0,
2953
+ fiatCurrency: normalizeString(token.fiatCurrency) ?? void 0
3159
2954
  };
3160
2955
  }
3161
2956
  function extractTokens(payload) {
@@ -3312,7 +3107,7 @@ function getAccountWalletListQueryOptions(username, currency = "usd") {
3312
3107
  try {
3313
3108
  const portfolio = await queryClient.fetchQuery(portfolioQuery);
3314
3109
  const tokensFromPortfolio = portfolio.wallets.map(
3315
- (asset) => asset.info.name
3110
+ (asset) => asset.name
3316
3111
  );
3317
3112
  if (tokensFromPortfolio.length > 0) {
3318
3113
  const visibleTokens = tokensFromPortfolio.map((token) => token?.toUpperCase?.()).filter((token) => Boolean(token)).filter(isTokenVisible);
@@ -3786,9 +3581,18 @@ function getAccountWalletAssetInfoQueryOptions(username, asset, options2 = { ref
3786
3581
  try {
3787
3582
  const portfolio = await queryClient.fetchQuery(portfolioQuery);
3788
3583
  const assetInfo = portfolio.wallets.find(
3789
- (assetItem) => assetItem.info.name === asset.toUpperCase()
3584
+ (assetItem) => assetItem.name === asset.toUpperCase()
3790
3585
  );
3791
- return assetInfo?.info;
3586
+ if (!assetInfo) return void 0;
3587
+ return {
3588
+ name: assetInfo.name,
3589
+ title: assetInfo.title ?? assetInfo.name,
3590
+ price: assetInfo.price ?? assetInfo.fiatRate ?? 0,
3591
+ accountBalance: assetInfo.accountBalance ?? 0,
3592
+ apr: assetInfo.apr?.toString(),
3593
+ layer: assetInfo.layer,
3594
+ pendingRewards: assetInfo.pendingRewards
3595
+ };
3792
3596
  } catch (e) {
3793
3597
  return void 0;
3794
3598
  }
@@ -3847,16 +3651,6 @@ function getAccountWalletAssetInfoQueryOptions(username, asset, options2 = { ref
3847
3651
  }
3848
3652
  });
3849
3653
  }
3850
- function normalizePartKey2(value) {
3851
- return value.trim().toLowerCase().replace(/[\s-]+/g, "_");
3852
- }
3853
- function hasNonZeroSavingsBalance(parts) {
3854
- return Boolean(
3855
- parts?.some(
3856
- (part) => normalizePartKey2(part.name) === "savings" && Number(part.balance) > 0
3857
- )
3858
- );
3859
- }
3860
3654
  function getTokenOperationsQueryOptions(token, username, isForOwner = false, currency = "usd") {
3861
3655
  return queryOptions({
3862
3656
  queryKey: ["wallets", "token-operations", token, username, isForOwner, currency],
@@ -3871,16 +3665,94 @@ function getTokenOperationsQueryOptions(token, username, isForOwner = false, cur
3871
3665
  getVisionPortfolioQueryOptions(username, currency)
3872
3666
  );
3873
3667
  const assetEntry = portfolio.wallets.find(
3874
- (assetItem) => assetItem.info.name === normalizedToken
3668
+ (assetItem) => assetItem.symbol?.toUpperCase() === normalizedToken || assetItem.name?.toUpperCase() === normalizedToken
3875
3669
  );
3876
3670
  if (!assetEntry) {
3877
3671
  return [];
3878
3672
  }
3879
- const operations = assetEntry.operations ?? [];
3880
- const isHiveOrHbd = ["HIVE", "HBD"].includes(
3881
- assetEntry.info.name.toUpperCase()
3882
- );
3883
- if (isHiveOrHbd && !hasNonZeroSavingsBalance(assetEntry.info.parts)) {
3673
+ const rawActions = assetEntry.actions ?? [];
3674
+ const operations = rawActions.map((action) => {
3675
+ if (typeof action === "string") return action;
3676
+ if (action && typeof action === "object") {
3677
+ const record = action;
3678
+ return record.id ?? record.code ?? record.name ?? record.action;
3679
+ }
3680
+ return void 0;
3681
+ }).filter((id) => Boolean(id)).map((id) => {
3682
+ const canonical = id.trim().toLowerCase().replace(/[\s_]+/g, "-");
3683
+ const aliasMap = {
3684
+ // Common operations
3685
+ "transfer": "transfer" /* Transfer */,
3686
+ "ecency-point-transfer": "transfer" /* Transfer */,
3687
+ "spkcc-spk-send": "transfer" /* Transfer */,
3688
+ // Savings operations
3689
+ "transfer-to-savings": "transfer-saving" /* TransferToSavings */,
3690
+ "transfer-savings": "transfer-saving" /* TransferToSavings */,
3691
+ "savings-transfer": "transfer-saving" /* TransferToSavings */,
3692
+ "withdraw-from-savings": "withdraw-saving" /* WithdrawFromSavings */,
3693
+ "transfer-from-savings": "withdraw-saving" /* WithdrawFromSavings */,
3694
+ "withdraw-savings": "withdraw-saving" /* WithdrawFromSavings */,
3695
+ "savings-withdraw": "withdraw-saving" /* WithdrawFromSavings */,
3696
+ // Vesting/Power operations
3697
+ "transfer-to-vesting": "power-up" /* PowerUp */,
3698
+ "powerup": "power-up" /* PowerUp */,
3699
+ "power-up": "power-up" /* PowerUp */,
3700
+ "withdraw-vesting": "power-down" /* PowerDown */,
3701
+ "power-down": "power-down" /* PowerDown */,
3702
+ "powerdown": "power-down" /* PowerDown */,
3703
+ // Delegation
3704
+ "delegate": "delegate" /* Delegate */,
3705
+ "delegate-vesting-shares": "delegate" /* Delegate */,
3706
+ "hp-delegate": "delegate" /* Delegate */,
3707
+ "delegate-hp": "delegate" /* Delegate */,
3708
+ "delegate-power": "delegate" /* Delegate */,
3709
+ "undelegate": "undelegate" /* Undelegate */,
3710
+ "undelegate-power": "undelegate" /* Undelegate */,
3711
+ "undelegate-token": "undelegate" /* Undelegate */,
3712
+ // Staking (Layer 2)
3713
+ "stake": "stake" /* Stake */,
3714
+ "stake-token": "stake" /* Stake */,
3715
+ "stake-power": "stake" /* Stake */,
3716
+ "unstake": "unstake" /* Unstake */,
3717
+ "unstake-token": "unstake" /* Unstake */,
3718
+ "unstake-power": "unstake" /* Unstake */,
3719
+ // Swap/Convert
3720
+ "swap": "swap" /* Swap */,
3721
+ "swap-token": "swap" /* Swap */,
3722
+ "swap-tokens": "swap" /* Swap */,
3723
+ "convert": "convert" /* Convert */,
3724
+ // Points operations
3725
+ "promote": "promote" /* Promote */,
3726
+ "promote-post": "promote" /* Promote */,
3727
+ "promote-entry": "promote" /* Promote */,
3728
+ "boost": "promote" /* Promote */,
3729
+ "gift": "gift" /* Gift */,
3730
+ "gift-points": "gift" /* Gift */,
3731
+ "points-gift": "gift" /* Gift */,
3732
+ "claim": "claim" /* Claim */,
3733
+ "claim-rewards": "claim" /* Claim */,
3734
+ "claim-points": "claim" /* Claim */,
3735
+ "buy": "buy" /* Buy */,
3736
+ "buy-points": "buy" /* Buy */,
3737
+ // Other
3738
+ "claim-interest": "claim-interest" /* ClaimInterest */,
3739
+ "withdraw-routes": "withdraw-routes" /* WithdrawRoutes */,
3740
+ "withdrawroutes": "withdraw-routes" /* WithdrawRoutes */,
3741
+ "lock": "lock" /* LockLiquidity */,
3742
+ "lock-liquidity": "lock" /* LockLiquidity */,
3743
+ "lock-liq": "lock" /* LockLiquidity */
3744
+ };
3745
+ const mapped = aliasMap[canonical];
3746
+ if (mapped) return mapped;
3747
+ const directMatch = Object.values(AssetOperation).find(
3748
+ (op) => op.toLowerCase() === canonical
3749
+ );
3750
+ return directMatch;
3751
+ }).filter((op) => Boolean(op)).filter((op, index, self) => self.indexOf(op) === index);
3752
+ const isHiveOrHbd = ["HIVE", "HBD"].includes(normalizedToken);
3753
+ const rawToken = assetEntry;
3754
+ const hasSavings = Number(rawToken.savings ?? 0) > 0;
3755
+ if (isHiveOrHbd && !hasSavings) {
3884
3756
  return operations.filter(
3885
3757
  (operation) => operation !== "withdraw-saving" /* WithdrawFromSavings */
3886
3758
  );