@ecency/wallets 1.4.25 → 1.4.27

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.
@@ -662,6 +662,30 @@ function rewardSpk(data, sstats) {
662
662
  }
663
663
  }
664
664
 
665
+ // src/internal/hive-auth.ts
666
+ var broadcastHandler = null;
667
+ function registerHiveAuthBroadcastHandler(handler) {
668
+ broadcastHandler = handler;
669
+ }
670
+ function getHiveAuthBroadcastHandler() {
671
+ return broadcastHandler;
672
+ }
673
+
674
+ // src/modules/assets/utils/hive-auth.ts
675
+ function registerWalletHiveAuthBroadcast(handler) {
676
+ registerHiveAuthBroadcastHandler(handler);
677
+ }
678
+ function broadcastWithWalletHiveAuth(username, operations, keyType) {
679
+ const handler = getHiveAuthBroadcastHandler();
680
+ if (!handler) {
681
+ throw new Error("HiveAuth broadcast handler is not registered");
682
+ }
683
+ return handler(username, operations, keyType);
684
+ }
685
+ function hasWalletHiveAuthBroadcast() {
686
+ return typeof getHiveAuthBroadcastHandler() === "function";
687
+ }
688
+
665
689
  // src/modules/assets/hive/queries/get-hive-asset-general-info-query-options.ts
666
690
  function getHiveAssetGeneralInfoQueryOptions(username) {
667
691
  return reactQuery.queryOptions({
@@ -1223,6 +1247,15 @@ async function transferHive(payload) {
1223
1247
  const precision = token === "VESTS" /* VESTS */ ? 6 : 3;
1224
1248
  const formattedAmount = parsedAsset.amount.toFixed(precision);
1225
1249
  const amountWithSymbol = `${formattedAmount} ${token}`;
1250
+ const operation = [
1251
+ "transfer",
1252
+ {
1253
+ from: payload.from,
1254
+ to: payload.to,
1255
+ amount: amountWithSymbol,
1256
+ memo: payload.memo
1257
+ }
1258
+ ];
1226
1259
  if (payload.type === "key" && "key" in payload) {
1227
1260
  const { key, type, ...params } = payload;
1228
1261
  return sdk.CONFIG.hiveClient.broadcast.transfer(
@@ -1252,17 +1285,11 @@ async function transferHive(payload) {
1252
1285
  null
1253
1286
  )
1254
1287
  );
1288
+ } else if (payload.type === "hiveauth") {
1289
+ return broadcastWithWalletHiveAuth(payload.from, [operation], "active");
1255
1290
  } else {
1256
1291
  return hs__default.default.sendOperation(
1257
- [
1258
- "transfer",
1259
- {
1260
- from: payload.from,
1261
- to: payload.to,
1262
- amount: amountWithSymbol,
1263
- memo: payload.memo
1264
- }
1265
- ],
1292
+ operation,
1266
1293
  { callback: `https://ecency.com/@${payload.from}/wallet` },
1267
1294
  () => {
1268
1295
  }
@@ -1270,6 +1297,13 @@ async function transferHive(payload) {
1270
1297
  }
1271
1298
  }
1272
1299
  async function transferToSavingsHive(payload) {
1300
+ const operationPayload = {
1301
+ from: payload.from,
1302
+ to: payload.to,
1303
+ amount: payload.amount,
1304
+ memo: payload.memo
1305
+ };
1306
+ const operation = ["transfer_to_savings", operationPayload];
1273
1307
  if (payload.type === "key" && "key" in payload) {
1274
1308
  const { key, type, ...params } = payload;
1275
1309
  return sdk.CONFIG.hiveClient.broadcast.sendOperations(
@@ -1277,18 +1311,12 @@ async function transferToSavingsHive(payload) {
1277
1311
  key
1278
1312
  );
1279
1313
  } else if (payload.type === "keychain") {
1280
- return sdk.Keychain.broadcast(
1281
- payload.from,
1282
- [["transfer_to_savings", payload]],
1283
- "Active"
1284
- );
1314
+ return sdk.Keychain.broadcast(payload.from, [operation], "Active");
1315
+ } else if (payload.type === "hiveauth") {
1316
+ return broadcastWithWalletHiveAuth(payload.from, [operation], "active");
1285
1317
  } else {
1286
- return hs__default.default.sendOperation(
1287
- ["transfer_to_savings", payload],
1288
- { callback: `https://ecency.com/@${payload.from}/wallet` },
1289
- () => {
1290
- }
1291
- );
1318
+ return hs__default.default.sendOperation(operation, { callback: `https://ecency.com/@${payload.from}/wallet` }, () => {
1319
+ });
1292
1320
  }
1293
1321
  }
1294
1322
  async function transferFromSavingsHive(payload) {
@@ -1300,28 +1328,31 @@ async function transferFromSavingsHive(payload) {
1300
1328
  memo: payload.memo,
1301
1329
  request_id: requestId
1302
1330
  };
1331
+ const operation = ["transfer_from_savings", operationPayload];
1303
1332
  if (payload.type === "key" && "key" in payload) {
1304
1333
  const { key } = payload;
1305
1334
  return sdk.CONFIG.hiveClient.broadcast.sendOperations(
1306
- [["transfer_from_savings", operationPayload]],
1335
+ [operation],
1307
1336
  key
1308
1337
  );
1309
1338
  }
1310
1339
  if (payload.type === "keychain") {
1311
- return sdk.Keychain.broadcast(
1312
- payload.from,
1313
- [["transfer_from_savings", operationPayload]],
1314
- "Active"
1315
- );
1340
+ return sdk.Keychain.broadcast(payload.from, [operation], "Active");
1316
1341
  }
1317
- return hs__default.default.sendOperation(
1318
- ["transfer_from_savings", operationPayload],
1319
- { callback: `https://ecency.com/@${payload.from}/wallet` },
1320
- () => {
1321
- }
1322
- );
1342
+ if (payload.type === "hiveauth") {
1343
+ return broadcastWithWalletHiveAuth(payload.from, [operation], "active");
1344
+ }
1345
+ return hs__default.default.sendOperation(operation, { callback: `https://ecency.com/@${payload.from}/wallet` }, () => {
1346
+ });
1323
1347
  }
1324
1348
  async function powerUpHive(payload) {
1349
+ const operationPayload = {
1350
+ from: payload.from,
1351
+ to: payload.to,
1352
+ amount: payload.amount,
1353
+ memo: payload.memo
1354
+ };
1355
+ const operation = ["transfer_to_vesting", operationPayload];
1325
1356
  if (payload.type === "key" && "key" in payload) {
1326
1357
  const { key, type, ...params } = payload;
1327
1358
  return sdk.CONFIG.hiveClient.broadcast.sendOperations(
@@ -1329,18 +1360,12 @@ async function powerUpHive(payload) {
1329
1360
  key
1330
1361
  );
1331
1362
  } else if (payload.type === "keychain") {
1332
- return sdk.Keychain.broadcast(
1333
- payload.from,
1334
- [["transfer_to_vesting", payload]],
1335
- "Active"
1336
- );
1363
+ return sdk.Keychain.broadcast(payload.from, [operation], "Active");
1364
+ } else if (payload.type === "hiveauth") {
1365
+ return broadcastWithWalletHiveAuth(payload.from, [operation], "active");
1337
1366
  } else {
1338
- return hs__default.default.sendOperation(
1339
- ["transfer_to_vesting", payload],
1340
- { callback: `https://ecency.com/@${payload.from}/wallet` },
1341
- () => {
1342
- }
1343
- );
1367
+ return hs__default.default.sendOperation(operation, { callback: `https://ecency.com/@${payload.from}/wallet` }, () => {
1368
+ });
1344
1369
  }
1345
1370
  }
1346
1371
  async function delegateHive(payload) {
@@ -1349,25 +1374,20 @@ async function delegateHive(payload) {
1349
1374
  delegatee: payload.to,
1350
1375
  vesting_shares: payload.amount
1351
1376
  };
1377
+ const operation = ["delegate_vesting_shares", operationPayload];
1352
1378
  if (payload.type === "key" && "key" in payload) {
1353
1379
  const { key } = payload;
1354
1380
  return sdk.CONFIG.hiveClient.broadcast.sendOperations(
1355
- [["delegate_vesting_shares", operationPayload]],
1381
+ [operation],
1356
1382
  key
1357
1383
  );
1358
1384
  } else if (payload.type === "keychain") {
1359
- return sdk.Keychain.broadcast(
1360
- payload.from,
1361
- [["delegate_vesting_shares", operationPayload]],
1362
- "Active"
1363
- );
1385
+ return sdk.Keychain.broadcast(payload.from, [operation], "Active");
1386
+ } else if (payload.type === "hiveauth") {
1387
+ return broadcastWithWalletHiveAuth(payload.from, [operation], "active");
1364
1388
  } else {
1365
- return hs__default.default.sendOperation(
1366
- ["delegate_vesting_shares", operationPayload],
1367
- { callback: `https://ecency.com/@${payload.from}/wallet` },
1368
- () => {
1369
- }
1370
- );
1389
+ return hs__default.default.sendOperation(operation, { callback: `https://ecency.com/@${payload.from}/wallet` }, () => {
1390
+ });
1371
1391
  }
1372
1392
  }
1373
1393
  async function powerDownHive(payload) {
@@ -1375,28 +1395,30 @@ async function powerDownHive(payload) {
1375
1395
  account: payload.from,
1376
1396
  vesting_shares: payload.amount
1377
1397
  };
1398
+ const operation = ["withdraw_vesting", operationPayload];
1378
1399
  if (payload.type === "key" && "key" in payload) {
1379
1400
  const { key } = payload;
1380
1401
  return sdk.CONFIG.hiveClient.broadcast.sendOperations(
1381
- [["withdraw_vesting", operationPayload]],
1402
+ [operation],
1382
1403
  key
1383
1404
  );
1384
1405
  } else if (payload.type === "keychain") {
1385
- return sdk.Keychain.broadcast(
1386
- payload.from,
1387
- [["withdraw_vesting", operationPayload]],
1388
- "Active"
1389
- );
1406
+ return sdk.Keychain.broadcast(payload.from, [operation], "Active");
1407
+ } else if (payload.type === "hiveauth") {
1408
+ return broadcastWithWalletHiveAuth(payload.from, [operation], "active");
1390
1409
  } else {
1391
- return hs__default.default.sendOperation(
1392
- ["withdraw_vesting", operationPayload],
1393
- { callback: `https://ecency.com/@${payload.from}/wallet` },
1394
- () => {
1395
- }
1396
- );
1410
+ return hs__default.default.sendOperation(operation, { callback: `https://ecency.com/@${payload.from}/wallet` }, () => {
1411
+ });
1397
1412
  }
1398
1413
  }
1399
1414
  async function withdrawVestingRouteHive(payload) {
1415
+ const baseParams = {
1416
+ from_account: payload.from_account,
1417
+ to_account: payload.to_account,
1418
+ percent: payload.percent,
1419
+ auto_vest: payload.auto_vest
1420
+ };
1421
+ const operation = ["set_withdraw_vesting_route", baseParams];
1400
1422
  if (payload.type === "key" && "key" in payload) {
1401
1423
  const { key, type: type2, ...params2 } = payload;
1402
1424
  return sdk.CONFIG.hiveClient.broadcast.sendOperations(
@@ -1406,19 +1428,14 @@ async function withdrawVestingRouteHive(payload) {
1406
1428
  }
1407
1429
  if (payload.type === "keychain") {
1408
1430
  const { type: type2, ...params2 } = payload;
1409
- return sdk.Keychain.broadcast(
1410
- params2.from_account,
1411
- [["set_withdraw_vesting_route", params2]],
1412
- "Active"
1413
- );
1431
+ return sdk.Keychain.broadcast(params2.from_account, [operation], "Active");
1432
+ }
1433
+ if (payload.type === "hiveauth") {
1434
+ return broadcastWithWalletHiveAuth(payload.from_account, [operation], "active");
1414
1435
  }
1415
1436
  const { type, ...params } = payload;
1416
- return hs__default.default.sendOperation(
1417
- ["set_withdraw_vesting_route", params],
1418
- { callback: `https://ecency.com/@${params.from_account}/wallet` },
1419
- () => {
1420
- }
1421
- );
1437
+ return hs__default.default.sendOperation(operation, { callback: `https://ecency.com/@${params.from_account}/wallet` }, () => {
1438
+ });
1422
1439
  }
1423
1440
  function useClaimRewards(username, onSuccess) {
1424
1441
  const { data } = reactQuery.useQuery(sdk.getAccountFullQueryOptions(username));
@@ -1472,35 +1489,22 @@ async function claimInterestHive(payload) {
1472
1489
  from: payload.from,
1473
1490
  request_id: requestId
1474
1491
  };
1492
+ const operations = [
1493
+ ["transfer_from_savings", baseOperation],
1494
+ ["cancel_transfer_from_savings", cancelOperation]
1495
+ ];
1475
1496
  if (payload.type === "key" && "key" in payload) {
1476
1497
  const { key } = payload;
1477
- return sdk.CONFIG.hiveClient.broadcast.sendOperations(
1478
- [
1479
- ["transfer_from_savings", baseOperation],
1480
- ["cancel_transfer_from_savings", cancelOperation]
1481
- ],
1482
- key
1483
- );
1498
+ return sdk.CONFIG.hiveClient.broadcast.sendOperations(operations, key);
1484
1499
  }
1485
1500
  if (payload.type === "keychain") {
1486
- return sdk.Keychain.broadcast(
1487
- payload.from,
1488
- [
1489
- ["transfer_from_savings", baseOperation],
1490
- ["cancel_transfer_from_savings", cancelOperation]
1491
- ],
1492
- "Active"
1493
- );
1501
+ return sdk.Keychain.broadcast(payload.from, operations, "Active");
1494
1502
  }
1495
- return hs__default.default.sendOperations(
1496
- [
1497
- ["transfer_from_savings", baseOperation],
1498
- ["cancel_transfer_from_savings", cancelOperation]
1499
- ],
1500
- { callback: `https://ecency.com/@${payload.from}/wallet` },
1501
- () => {
1502
- }
1503
- );
1503
+ if (payload.type === "hiveauth") {
1504
+ return broadcastWithWalletHiveAuth(payload.from, operations, "active");
1505
+ }
1506
+ return hs__default.default.sendOperations(operations, { callback: `https://ecency.com/@${payload.from}/wallet` }, () => {
1507
+ });
1504
1508
  }
1505
1509
 
1506
1510
  // src/modules/assets/types/asset-operation.ts
@@ -1536,6 +1540,15 @@ async function transferSpk(payload) {
1536
1540
  required_auths: [payload.from],
1537
1541
  required_posting_auths: []
1538
1542
  };
1543
+ const operation = [
1544
+ "custom_json",
1545
+ {
1546
+ id: op.id,
1547
+ required_auths: [payload.from],
1548
+ required_posting_auths: [],
1549
+ json
1550
+ }
1551
+ ];
1539
1552
  if (payload.type === "key" && "key" in payload) {
1540
1553
  const { key } = payload;
1541
1554
  return sdk.CONFIG.hiveClient.broadcast.json(op, key);
@@ -1547,6 +1560,8 @@ async function transferSpk(payload) {
1547
1560
  json,
1548
1561
  payload.to
1549
1562
  );
1563
+ } else if (payload.type === "hiveauth") {
1564
+ return broadcastWithWalletHiveAuth(payload.from, [operation], "active");
1550
1565
  } else {
1551
1566
  const { amount } = parseAsset(payload.amount);
1552
1567
  return hs__default.default.sign(
@@ -1574,6 +1589,15 @@ var lockLarynx = async (payload) => {
1574
1589
  required_auths: [payload.from],
1575
1590
  required_posting_auths: []
1576
1591
  };
1592
+ const operation = [
1593
+ "custom_json",
1594
+ {
1595
+ id: op.id,
1596
+ required_auths: [payload.from],
1597
+ required_posting_auths: [],
1598
+ json
1599
+ }
1600
+ ];
1577
1601
  if (payload.type === "key" && "key" in payload) {
1578
1602
  const { key } = payload;
1579
1603
  return sdk.CONFIG.hiveClient.broadcast.json(op, key);
@@ -1585,6 +1609,8 @@ var lockLarynx = async (payload) => {
1585
1609
  json,
1586
1610
  payload.from
1587
1611
  );
1612
+ } else if (payload.type === "hiveauth") {
1613
+ return broadcastWithWalletHiveAuth(payload.from, [operation], "active");
1588
1614
  } else {
1589
1615
  const { amount } = parseAsset(payload.amount);
1590
1616
  return hs__default.default.sign(
@@ -1608,6 +1634,15 @@ async function powerUpLarynx(payload) {
1608
1634
  required_auths: [payload.from],
1609
1635
  required_posting_auths: []
1610
1636
  };
1637
+ const operation = [
1638
+ "custom_json",
1639
+ {
1640
+ id: `spkcc_power_${payload.mode}`,
1641
+ required_auths: [payload.from],
1642
+ required_posting_auths: [],
1643
+ json
1644
+ }
1645
+ ];
1611
1646
  if (payload.type === "key" && "key" in payload) {
1612
1647
  const { key } = payload;
1613
1648
  return sdk.CONFIG.hiveClient.broadcast.json(op, key);
@@ -1619,6 +1654,8 @@ async function powerUpLarynx(payload) {
1619
1654
  json,
1620
1655
  ""
1621
1656
  );
1657
+ } else if (payload.type === "hiveauth") {
1658
+ return broadcastWithWalletHiveAuth(payload.from, [operation], "active");
1622
1659
  } else {
1623
1660
  const { amount } = parseAsset(payload.amount);
1624
1661
  return hs__default.default.sign(
@@ -1646,6 +1683,15 @@ async function transferLarynx(payload) {
1646
1683
  required_auths: [payload.from],
1647
1684
  required_posting_auths: []
1648
1685
  };
1686
+ const operation = [
1687
+ "custom_json",
1688
+ {
1689
+ id: "spkcc_send",
1690
+ required_auths: [payload.from],
1691
+ required_posting_auths: [],
1692
+ json
1693
+ }
1694
+ ];
1649
1695
  if (payload.type === "key" && "key" in payload) {
1650
1696
  const { key } = payload;
1651
1697
  return sdk.CONFIG.hiveClient.broadcast.json(op, key);
@@ -1657,6 +1703,8 @@ async function transferLarynx(payload) {
1657
1703
  json,
1658
1704
  payload.to
1659
1705
  );
1706
+ } else if (payload.type === "hiveauth") {
1707
+ return broadcastWithWalletHiveAuth(payload.from, [operation], "active");
1660
1708
  } else {
1661
1709
  const { amount } = parseAsset(payload.amount);
1662
1710
  return hs__default.default.sign(
@@ -2057,6 +2105,23 @@ function getHiveEngineTokensMetricsQueryOptions(symbol, interval = "daily") {
2057
2105
  async function delegateEngineToken(payload) {
2058
2106
  const parsedAsset = parseAsset(payload.amount);
2059
2107
  const quantity = parsedAsset.amount.toString();
2108
+ const operation = [
2109
+ "custom_json",
2110
+ {
2111
+ id: "ssc-mainnet-hive",
2112
+ required_auths: [payload.from],
2113
+ required_posting_auths: [],
2114
+ json: JSON.stringify({
2115
+ contractName: "tokens",
2116
+ contractAction: "delegate",
2117
+ contractPayload: {
2118
+ symbol: payload.asset,
2119
+ to: payload.to,
2120
+ quantity
2121
+ }
2122
+ })
2123
+ }
2124
+ ];
2060
2125
  if (payload.type === "key" && "key" in payload) {
2061
2126
  const { key, type, ...params } = payload;
2062
2127
  const op = {
@@ -2080,15 +2145,7 @@ async function delegateEngineToken(payload) {
2080
2145
  payload.from,
2081
2146
  "ssc-mainnet-hive",
2082
2147
  "Active",
2083
- JSON.stringify({
2084
- contractName: "tokens",
2085
- contractAction: "delegate",
2086
- contractPayload: {
2087
- symbol: payload.asset,
2088
- to: payload.to,
2089
- quantity
2090
- }
2091
- }),
2148
+ operation[1].json,
2092
2149
  "Token Delegation",
2093
2150
  (resp) => {
2094
2151
  if (!resp.success) {
@@ -2098,25 +2155,11 @@ async function delegateEngineToken(payload) {
2098
2155
  }
2099
2156
  )
2100
2157
  );
2158
+ } else if (payload.type === "hiveauth") {
2159
+ return broadcastWithWalletHiveAuth(payload.from, [operation], "active");
2101
2160
  } else {
2102
2161
  return hs__default.default.sendOperation(
2103
- [
2104
- "custom_json",
2105
- {
2106
- id: "ssc-mainnet-hive",
2107
- required_auths: [payload.from],
2108
- required_posting_auths: [],
2109
- json: JSON.stringify({
2110
- contractName: "tokens",
2111
- contractAction: "delegate",
2112
- contractPayload: {
2113
- symbol: payload.asset,
2114
- to: payload.to,
2115
- quantity
2116
- }
2117
- })
2118
- }
2119
- ],
2162
+ operation,
2120
2163
  { callback: `https://ecency.com/@${payload.from}/wallet` },
2121
2164
  () => {
2122
2165
  }
@@ -2126,6 +2169,23 @@ async function delegateEngineToken(payload) {
2126
2169
  async function undelegateEngineToken(payload) {
2127
2170
  const parsedAsset = parseAsset(payload.amount);
2128
2171
  const quantity = parsedAsset.amount.toString();
2172
+ const operation = [
2173
+ "custom_json",
2174
+ {
2175
+ id: "ssc-mainnet-hive",
2176
+ required_auths: [payload.from],
2177
+ required_posting_auths: [],
2178
+ json: JSON.stringify({
2179
+ contractName: "tokens",
2180
+ contractAction: "undelegate",
2181
+ contractPayload: {
2182
+ symbol: payload.asset,
2183
+ from: payload.to,
2184
+ quantity
2185
+ }
2186
+ })
2187
+ }
2188
+ ];
2129
2189
  if (payload.type === "key" && "key" in payload) {
2130
2190
  const { key, type, ...params } = payload;
2131
2191
  const op = {
@@ -2149,15 +2209,7 @@ async function undelegateEngineToken(payload) {
2149
2209
  payload.from,
2150
2210
  "ssc-mainnet-hive",
2151
2211
  "Active",
2152
- JSON.stringify({
2153
- contractName: "tokens",
2154
- contractAction: "undelegate",
2155
- contractPayload: {
2156
- symbol: payload.asset,
2157
- from: payload.to,
2158
- quantity
2159
- }
2160
- }),
2212
+ operation[1].json,
2161
2213
  "Token Undelegation",
2162
2214
  (resp) => {
2163
2215
  if (!resp.success) {
@@ -2167,25 +2219,11 @@ async function undelegateEngineToken(payload) {
2167
2219
  }
2168
2220
  )
2169
2221
  );
2222
+ } else if (payload.type === "hiveauth") {
2223
+ return broadcastWithWalletHiveAuth(payload.from, [operation], "active");
2170
2224
  } else {
2171
2225
  return hs__default.default.sendOperation(
2172
- [
2173
- "custom_json",
2174
- {
2175
- id: "ssc-mainnet-hive",
2176
- required_auths: [payload.from],
2177
- required_posting_auths: [],
2178
- json: JSON.stringify({
2179
- contractName: "tokens",
2180
- contractAction: "undelegate",
2181
- contractPayload: {
2182
- symbol: payload.asset,
2183
- from: payload.to,
2184
- quantity
2185
- }
2186
- })
2187
- }
2188
- ],
2226
+ operation,
2189
2227
  { callback: `https://ecency.com/@${payload.from}/wallet` },
2190
2228
  () => {
2191
2229
  }
@@ -2195,6 +2233,23 @@ async function undelegateEngineToken(payload) {
2195
2233
  async function stakeEngineToken(payload) {
2196
2234
  const parsedAsset = parseAsset(payload.amount);
2197
2235
  const quantity = parsedAsset.amount.toString();
2236
+ const operation = [
2237
+ "custom_json",
2238
+ {
2239
+ id: "ssc-mainnet-hive",
2240
+ required_auths: [payload.from],
2241
+ required_posting_auths: [],
2242
+ json: JSON.stringify({
2243
+ contractName: "tokens",
2244
+ contractAction: "stake",
2245
+ contractPayload: {
2246
+ symbol: payload.asset,
2247
+ to: payload.to,
2248
+ quantity
2249
+ }
2250
+ })
2251
+ }
2252
+ ];
2198
2253
  if (payload.type === "key" && "key" in payload) {
2199
2254
  const { key, type, ...params } = payload;
2200
2255
  const op = {
@@ -2218,15 +2273,7 @@ async function stakeEngineToken(payload) {
2218
2273
  payload.from,
2219
2274
  "ssc-mainnet-hive",
2220
2275
  "Active",
2221
- JSON.stringify({
2222
- contractName: "tokens",
2223
- contractAction: "stake",
2224
- contractPayload: {
2225
- symbol: payload.asset,
2226
- to: payload.to,
2227
- quantity
2228
- }
2229
- }),
2276
+ operation[1].json,
2230
2277
  "Token Staking",
2231
2278
  (resp) => {
2232
2279
  if (!resp.success) {
@@ -2236,25 +2283,11 @@ async function stakeEngineToken(payload) {
2236
2283
  }
2237
2284
  )
2238
2285
  );
2286
+ } else if (payload.type === "hiveauth") {
2287
+ return broadcastWithWalletHiveAuth(payload.from, [operation], "active");
2239
2288
  } else {
2240
2289
  return hs__default.default.sendOperation(
2241
- [
2242
- "custom_json",
2243
- {
2244
- id: "ssc-mainnet-hive",
2245
- required_auths: [payload.from],
2246
- required_posting_auths: [],
2247
- json: JSON.stringify({
2248
- contractName: "tokens",
2249
- contractAction: "stake",
2250
- contractPayload: {
2251
- symbol: payload.asset,
2252
- to: payload.to,
2253
- quantity
2254
- }
2255
- })
2256
- }
2257
- ],
2290
+ operation,
2258
2291
  { callback: `https://ecency.com/@${payload.from}/wallet` },
2259
2292
  () => {
2260
2293
  }
@@ -2264,6 +2297,23 @@ async function stakeEngineToken(payload) {
2264
2297
  async function unstakeEngineToken(payload) {
2265
2298
  const parsedAsset = parseAsset(payload.amount);
2266
2299
  const quantity = parsedAsset.amount.toString();
2300
+ const operation = [
2301
+ "custom_json",
2302
+ {
2303
+ id: "ssc-mainnet-hive",
2304
+ required_auths: [payload.from],
2305
+ required_posting_auths: [],
2306
+ json: JSON.stringify({
2307
+ contractName: "tokens",
2308
+ contractAction: "unstake",
2309
+ contractPayload: {
2310
+ symbol: payload.asset,
2311
+ to: payload.to,
2312
+ quantity
2313
+ }
2314
+ })
2315
+ }
2316
+ ];
2267
2317
  if (payload.type === "key" && "key" in payload) {
2268
2318
  const { key, type, ...params } = payload;
2269
2319
  const op = {
@@ -2287,15 +2337,7 @@ async function unstakeEngineToken(payload) {
2287
2337
  payload.from,
2288
2338
  "ssc-mainnet-hive",
2289
2339
  "Active",
2290
- JSON.stringify({
2291
- contractName: "tokens",
2292
- contractAction: "unstake",
2293
- contractPayload: {
2294
- symbol: payload.asset,
2295
- to: payload.to,
2296
- quantity
2297
- }
2298
- }),
2340
+ operation[1].json,
2299
2341
  "Token Unstaking",
2300
2342
  (resp) => {
2301
2343
  if (!resp.success) {
@@ -2305,25 +2347,11 @@ async function unstakeEngineToken(payload) {
2305
2347
  }
2306
2348
  )
2307
2349
  );
2350
+ } else if (payload.type === "hiveauth") {
2351
+ return broadcastWithWalletHiveAuth(payload.from, [operation], "active");
2308
2352
  } else {
2309
2353
  return hs__default.default.sendOperation(
2310
- [
2311
- "custom_json",
2312
- {
2313
- id: "ssc-mainnet-hive",
2314
- required_auths: [payload.from],
2315
- required_posting_auths: [],
2316
- json: JSON.stringify({
2317
- contractName: "tokens",
2318
- contractAction: "unstake",
2319
- contractPayload: {
2320
- symbol: payload.asset,
2321
- to: payload.to,
2322
- quantity
2323
- }
2324
- })
2325
- }
2326
- ],
2354
+ operation,
2327
2355
  { callback: `https://ecency.com/@${payload.from}/wallet` },
2328
2356
  () => {
2329
2357
  }
@@ -2333,6 +2361,24 @@ async function unstakeEngineToken(payload) {
2333
2361
  async function transferEngineToken(payload) {
2334
2362
  const parsedAsset = parseAsset(payload.amount);
2335
2363
  const quantity = parsedAsset.amount.toString();
2364
+ const operation = [
2365
+ "custom_json",
2366
+ {
2367
+ id: "ssc-mainnet-hive",
2368
+ required_auths: [payload.from],
2369
+ required_posting_auths: [],
2370
+ json: JSON.stringify({
2371
+ contractName: "tokens",
2372
+ contractAction: "transfer",
2373
+ contractPayload: {
2374
+ symbol: payload.asset,
2375
+ to: payload.to,
2376
+ quantity,
2377
+ memo: payload.memo
2378
+ }
2379
+ })
2380
+ }
2381
+ ];
2336
2382
  if (payload.type === "key" && "key" in payload) {
2337
2383
  const { key, type, ...params } = payload;
2338
2384
  const op = {
@@ -2357,16 +2403,7 @@ async function transferEngineToken(payload) {
2357
2403
  payload.from,
2358
2404
  "ssc-mainnet-hive",
2359
2405
  "Active",
2360
- JSON.stringify({
2361
- contractName: "tokens",
2362
- contractAction: "transfer",
2363
- contractPayload: {
2364
- symbol: payload.asset,
2365
- to: payload.to,
2366
- quantity,
2367
- memo: payload.memo
2368
- }
2369
- }),
2406
+ operation[1].json,
2370
2407
  "Token Transfer",
2371
2408
  (resp) => {
2372
2409
  if (!resp.success) {
@@ -2376,26 +2413,11 @@ async function transferEngineToken(payload) {
2376
2413
  }
2377
2414
  )
2378
2415
  );
2416
+ } else if (payload.type === "hiveauth") {
2417
+ return broadcastWithWalletHiveAuth(payload.from, [operation], "active");
2379
2418
  } else {
2380
2419
  return hs__default.default.sendOperation(
2381
- [
2382
- "custom_json",
2383
- {
2384
- id: "ssc-mainnet-hive",
2385
- required_auths: [payload.from],
2386
- required_posting_auths: [],
2387
- json: JSON.stringify({
2388
- contractName: "tokens",
2389
- contractAction: "transfer",
2390
- contractPayload: {
2391
- symbol: payload.asset,
2392
- to: payload.to,
2393
- quantity,
2394
- memo: payload.memo
2395
- }
2396
- })
2397
- }
2398
- ],
2420
+ operation,
2399
2421
  { callback: `https://ecency.com/@${payload.from}/wallet` },
2400
2422
  () => {
2401
2423
  }
@@ -2558,12 +2580,11 @@ async function transferPoint({
2558
2580
  if (type === "keychain") {
2559
2581
  return sdk.Keychain.broadcast(from, [op], "Active");
2560
2582
  }
2561
- return hs__default.default.sendOperation(
2562
- op,
2563
- { callback: `https://ecency.com/@${from}/wallet` },
2564
- () => {
2565
- }
2566
- );
2583
+ if (type === "hiveauth") {
2584
+ return broadcastWithWalletHiveAuth(from, [op], "active");
2585
+ }
2586
+ return hs__default.default.sendOperation(op, { callback: `https://ecency.com/@${from}/wallet` }, () => {
2587
+ });
2567
2588
  }
2568
2589
 
2569
2590
  // src/modules/assets/points/types/point-transaction-type.ts
@@ -2654,16 +2675,400 @@ function getAllTokensListQueryOptions(username) {
2654
2675
  }
2655
2676
  });
2656
2677
  }
2678
+ var ACTION_ALIAS_MAP = {
2679
+ "transfer-to-savings": "transfer-saving" /* TransferToSavings */,
2680
+ "transfer-savings": "transfer-saving" /* TransferToSavings */,
2681
+ "savings-transfer": "transfer-saving" /* TransferToSavings */,
2682
+ "withdraw-from-savings": "withdraw-saving" /* WithdrawFromSavings */,
2683
+ "withdraw-savings": "withdraw-saving" /* WithdrawFromSavings */,
2684
+ "savings-withdraw": "withdraw-saving" /* WithdrawFromSavings */,
2685
+ "powerup": "power-up" /* PowerUp */,
2686
+ "power-down": "power-down" /* PowerDown */,
2687
+ "powerdown": "power-down" /* PowerDown */,
2688
+ "hp-delegate": "delegate" /* Delegate */,
2689
+ "delegate-hp": "delegate" /* Delegate */,
2690
+ "delegate-power": "delegate" /* Delegate */,
2691
+ "undelegate-power": "undelegate" /* Undelegate */,
2692
+ "undelegate-token": "undelegate" /* Undelegate */,
2693
+ "stake-token": "stake" /* Stake */,
2694
+ "stake-power": "stake" /* Stake */,
2695
+ "unstake-token": "unstake" /* Unstake */,
2696
+ "unstake-power": "unstake" /* Unstake */,
2697
+ "lock-liquidity": "lock" /* LockLiquidity */,
2698
+ "lock-liq": "lock" /* LockLiquidity */,
2699
+ "gift-points": "gift" /* Gift */,
2700
+ "points-gift": "gift" /* Gift */,
2701
+ "promote-post": "promote" /* Promote */,
2702
+ "promote-entry": "promote" /* Promote */,
2703
+ "claim-points": "claim" /* Claim */,
2704
+ "claim-rewards": "claim" /* Claim */,
2705
+ "buy-points": "buy" /* Buy */,
2706
+ "swap-token": "swap" /* Swap */,
2707
+ "swap-tokens": "swap" /* Swap */,
2708
+ "withdraw-routes": "withdraw-routes" /* WithdrawRoutes */,
2709
+ "withdrawroutes": "withdraw-routes" /* WithdrawRoutes */,
2710
+ "claim-interest": "claim-interest" /* ClaimInterest */
2711
+ };
2712
+ var KNOWN_OPERATION_VALUES = new Map(
2713
+ Object.values(AssetOperation).map((value) => [value, value])
2714
+ );
2715
+ var DERIVED_PART_KEY_MAP = {
2716
+ liquid: ["liquid", "liquidBalance", "liquid_amount", "liquidTokens"],
2717
+ savings: ["savings", "savingsBalance", "savings_amount"],
2718
+ staked: ["staked", "stakedBalance", "staking", "stake", "power"],
2719
+ delegated: ["delegated", "delegatedBalance", "delegationsOut"],
2720
+ received: ["received", "receivedBalance", "delegationsIn"],
2721
+ pending: [
2722
+ "pending",
2723
+ "pendingRewards",
2724
+ "unclaimed",
2725
+ "unclaimedBalance",
2726
+ "pendingReward"
2727
+ ]
2728
+ };
2729
+ var EXTRA_DATA_PART_KEY_MAP = {
2730
+ delegated: "outgoing_delegations",
2731
+ outgoing: "outgoing_delegations",
2732
+ delegations_out: "outgoing_delegations",
2733
+ delegated_hive_power: "outgoing_delegations",
2734
+ delegated_hp: "outgoing_delegations",
2735
+ received: "incoming_delegations",
2736
+ incoming: "incoming_delegations",
2737
+ delegations_in: "incoming_delegations",
2738
+ received_hive_power: "incoming_delegations",
2739
+ received_hp: "incoming_delegations",
2740
+ powering_down: "pending_power_down",
2741
+ power_down: "pending_power_down",
2742
+ powering_down_hive_power: "pending_power_down"
2743
+ };
2744
+ function normalizeString(value) {
2745
+ if (typeof value === "string") {
2746
+ const trimmed = value.trim();
2747
+ return trimmed.length > 0 ? trimmed : void 0;
2748
+ }
2749
+ return void 0;
2750
+ }
2751
+ function normalizeNumber(value) {
2752
+ if (typeof value === "number" && Number.isFinite(value)) {
2753
+ return value;
2754
+ }
2755
+ if (typeof value === "string") {
2756
+ const trimmed = value.trim();
2757
+ if (!trimmed) {
2758
+ return void 0;
2759
+ }
2760
+ const direct = Number.parseFloat(trimmed);
2761
+ if (Number.isFinite(direct)) {
2762
+ return direct;
2763
+ }
2764
+ const sanitized = trimmed.replace(/,/g, "");
2765
+ const match = sanitized.match(/[-+]?\d+(?:\.\d+)?/);
2766
+ if (match) {
2767
+ const parsed = Number.parseFloat(match[0]);
2768
+ if (Number.isFinite(parsed)) {
2769
+ return parsed;
2770
+ }
2771
+ }
2772
+ }
2773
+ return void 0;
2774
+ }
2775
+ function normalizeApr(value) {
2776
+ const numeric = normalizeNumber(value);
2777
+ if (numeric === void 0) {
2778
+ if (typeof value === "string") {
2779
+ const trimmed = value.trim();
2780
+ return trimmed.length > 0 ? trimmed : void 0;
2781
+ }
2782
+ return void 0;
2783
+ }
2784
+ return numeric.toString();
2785
+ }
2786
+ function normalizeParts(rawParts) {
2787
+ if (Array.isArray(rawParts)) {
2788
+ const parsed = rawParts.map((item) => {
2789
+ if (!item || typeof item !== "object") {
2790
+ return void 0;
2791
+ }
2792
+ const name = normalizeString(
2793
+ item.name ?? item.label ?? item.type ?? item.part
2794
+ );
2795
+ const balance = normalizeNumber(
2796
+ item.balance ?? item.amount ?? item.value
2797
+ );
2798
+ if (!name || balance === void 0) {
2799
+ return void 0;
2800
+ }
2801
+ return { name, balance };
2802
+ }).filter((item) => Boolean(item));
2803
+ return parsed.length ? parsed : void 0;
2804
+ }
2805
+ if (rawParts && typeof rawParts === "object") {
2806
+ const parsed = Object.entries(rawParts).map(([name, amount]) => {
2807
+ const balance = normalizeNumber(amount);
2808
+ if (!name || balance === void 0) {
2809
+ return void 0;
2810
+ }
2811
+ return { name, balance };
2812
+ }).filter((item) => Boolean(item));
2813
+ return parsed.length ? parsed : void 0;
2814
+ }
2815
+ return void 0;
2816
+ }
2817
+ function deriveParts(record) {
2818
+ const derived = Object.entries(DERIVED_PART_KEY_MAP).map(([name, keys]) => {
2819
+ for (const key of keys) {
2820
+ const value = normalizeNumber(record[key]);
2821
+ if (value !== void 0) {
2822
+ return { name, balance: value };
2823
+ }
2824
+ }
2825
+ return void 0;
2826
+ }).filter((item) => Boolean(item));
2827
+ return derived.length ? derived : void 0;
2828
+ }
2829
+ function normalizePartKey(value) {
2830
+ return value.trim().toLowerCase().replace(/[\s-]+/g, "_");
2831
+ }
2832
+ function mergeParts(...sources) {
2833
+ const order = [];
2834
+ const values2 = /* @__PURE__ */ new Map();
2835
+ for (const parts of sources) {
2836
+ if (!parts) {
2837
+ continue;
2838
+ }
2839
+ for (const part of parts) {
2840
+ if (!part?.name || typeof part.balance !== "number") {
2841
+ continue;
2842
+ }
2843
+ const existing = values2.get(part.name);
2844
+ if (existing === void 0) {
2845
+ order.push(part.name);
2846
+ values2.set(part.name, part.balance);
2847
+ } else {
2848
+ values2.set(part.name, existing + part.balance);
2849
+ }
2850
+ }
2851
+ }
2852
+ return order.length ? order.map((name) => ({ name, balance: values2.get(name) })) : void 0;
2853
+ }
2854
+ function normalizeExtraDataParts(rawExtraData) {
2855
+ const items = Array.isArray(rawExtraData) ? rawExtraData : rawExtraData && typeof rawExtraData === "object" ? Object.values(rawExtraData) : [];
2856
+ const parts = items.map((item) => {
2857
+ if (!item || typeof item !== "object") {
2858
+ return void 0;
2859
+ }
2860
+ const record = item;
2861
+ const keyCandidate = normalizeString(record.dataKey) ?? normalizeString(record.key) ?? normalizeString(record.name);
2862
+ if (!keyCandidate) {
2863
+ return void 0;
2864
+ }
2865
+ const canonical = normalizePartKey(keyCandidate);
2866
+ const partName = EXTRA_DATA_PART_KEY_MAP[canonical];
2867
+ if (!partName) {
2868
+ return void 0;
2869
+ }
2870
+ const balance = normalizeNumber(
2871
+ record.balance ?? record.amount ?? record.value ?? record.displayValue ?? record.text
2872
+ );
2873
+ if (balance === void 0) {
2874
+ return void 0;
2875
+ }
2876
+ return { name: partName, balance: Math.abs(balance) };
2877
+ }).filter((part) => Boolean(part));
2878
+ return parts.length ? parts : void 0;
2879
+ }
2880
+ function normalizeActionKey(value) {
2881
+ return value.trim().toLowerCase().replace(/[\s_]+/g, "-");
2882
+ }
2883
+ function mapActions(rawActions) {
2884
+ if (!rawActions) {
2885
+ return [];
2886
+ }
2887
+ const rawList = Array.isArray(rawActions) ? rawActions : [rawActions];
2888
+ const result = [];
2889
+ for (const raw of rawList) {
2890
+ let candidate;
2891
+ if (typeof raw === "string") {
2892
+ candidate = raw;
2893
+ } else if (raw && typeof raw === "object") {
2894
+ const record = raw;
2895
+ candidate = normalizeString(record.code) ?? normalizeString(record.name) ?? normalizeString(record.action);
2896
+ }
2897
+ if (!candidate) {
2898
+ continue;
2899
+ }
2900
+ const canonical = normalizeActionKey(candidate);
2901
+ const operation = KNOWN_OPERATION_VALUES.get(canonical) ?? ACTION_ALIAS_MAP[canonical];
2902
+ if (operation && !result.includes(operation)) {
2903
+ result.push(operation);
2904
+ }
2905
+ }
2906
+ return result;
2907
+ }
2908
+ function parseToken(rawToken) {
2909
+ if (!rawToken || typeof rawToken !== "object") {
2910
+ return void 0;
2911
+ }
2912
+ const token = rawToken;
2913
+ const symbol = normalizeString(token.symbol) ?? normalizeString(token.asset) ?? normalizeString(token.name);
2914
+ if (!symbol) {
2915
+ return void 0;
2916
+ }
2917
+ const normalizedSymbol = symbol.toUpperCase();
2918
+ const title = normalizeString(token.title) ?? normalizeString(token.display) ?? normalizeString(token.label) ?? normalizeString(token.friendlyName) ?? normalizeString(token.name) ?? normalizedSymbol;
2919
+ const price = normalizeNumber(token.fiatRate) ?? normalizeNumber(token.price) ?? normalizeNumber(token.priceUsd) ?? normalizeNumber(token.usdPrice) ?? normalizeNumber(token.metrics?.price) ?? normalizeNumber(
2920
+ token.metrics?.priceUsd
2921
+ ) ?? 0;
2922
+ const apr = normalizeApr(token.apr) ?? normalizeApr(token.aprPercent) ?? normalizeApr(token.metrics?.apr) ?? normalizeApr(
2923
+ token.metrics?.aprPercent
2924
+ );
2925
+ const baseParts = normalizeParts(
2926
+ token.parts ?? token.balances ?? token.sections ?? token.breakdown ?? token.accountBreakdown ?? token.walletParts
2927
+ ) ?? deriveParts(token);
2928
+ const parts = mergeParts(
2929
+ baseParts,
2930
+ normalizeExtraDataParts(
2931
+ token.extraData ?? token.extra_data ?? token.extra ?? token.badges
2932
+ )
2933
+ );
2934
+ 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);
2935
+ const layer = normalizeString(token.layer) ?? normalizeString(token.chain) ?? normalizeString(token.category) ?? normalizeString(token.type);
2936
+ return {
2937
+ symbol: normalizedSymbol,
2938
+ info: {
2939
+ name: normalizedSymbol,
2940
+ title,
2941
+ price,
2942
+ accountBalance,
2943
+ apr: apr ?? void 0,
2944
+ layer: layer ?? void 0,
2945
+ parts
2946
+ },
2947
+ operations: mapActions(
2948
+ token.actions ?? token.available_actions ?? token.availableActions ?? token.operations ?? token.supportedActions
2949
+ )
2950
+ };
2951
+ }
2952
+ function extractTokens(payload) {
2953
+ if (!payload || typeof payload !== "object") {
2954
+ return [];
2955
+ }
2956
+ const containers = [payload];
2957
+ const record = payload;
2958
+ if (record.data && typeof record.data === "object") {
2959
+ containers.push(record.data);
2960
+ }
2961
+ if (record.result && typeof record.result === "object") {
2962
+ containers.push(record.result);
2963
+ }
2964
+ if (record.portfolio && typeof record.portfolio === "object") {
2965
+ containers.push(record.portfolio);
2966
+ }
2967
+ for (const container of containers) {
2968
+ if (Array.isArray(container)) {
2969
+ return container;
2970
+ }
2971
+ if (container && typeof container === "object") {
2972
+ for (const key of [
2973
+ "wallets",
2974
+ "tokens",
2975
+ "assets",
2976
+ "items",
2977
+ "portfolio",
2978
+ "balances"
2979
+ ]) {
2980
+ const value = container[key];
2981
+ if (Array.isArray(value)) {
2982
+ return value;
2983
+ }
2984
+ }
2985
+ }
2986
+ }
2987
+ return [];
2988
+ }
2989
+ function resolveUsername(payload) {
2990
+ if (!payload || typeof payload !== "object") {
2991
+ return void 0;
2992
+ }
2993
+ const record = payload;
2994
+ return normalizeString(record.username) ?? normalizeString(record.name) ?? normalizeString(record.account);
2995
+ }
2996
+ function getVisionPortfolioQueryOptions(username) {
2997
+ return reactQuery.queryOptions({
2998
+ queryKey: [
2999
+ "ecency-wallets",
3000
+ "portfolio",
3001
+ "v2",
3002
+ username,
3003
+ "only-enabled"
3004
+ ],
3005
+ enabled: Boolean(username),
3006
+ staleTime: 6e4,
3007
+ refetchInterval: 12e4,
3008
+ queryFn: async () => {
3009
+ if (!username) {
3010
+ throw new Error("[SDK][Wallets] \u2013 username is required");
3011
+ }
3012
+ if (!sdk.CONFIG.privateApiHost) {
3013
+ throw new Error(
3014
+ "[SDK][Wallets] \u2013 privateApiHost isn't configured for portfolio"
3015
+ );
3016
+ }
3017
+ const endpoint = `${sdk.CONFIG.privateApiHost}/wallet-api/portfolio-v2`;
3018
+ const response = await fetch(endpoint, {
3019
+ method: "POST",
3020
+ headers: {
3021
+ Accept: "application/json",
3022
+ "Content-Type": "application/json"
3023
+ },
3024
+ body: JSON.stringify({ username, onlyEnabled: true })
3025
+ });
3026
+ if (!response.ok) {
3027
+ throw new Error(
3028
+ `[SDK][Wallets] \u2013 Vision portfolio request failed(${response.status})`
3029
+ );
3030
+ }
3031
+ const payload = await response.json();
3032
+ const tokens = extractTokens(payload).map((item) => parseToken(item)).filter((item) => Boolean(item));
3033
+ if (!tokens.length) {
3034
+ throw new Error(
3035
+ "[SDK][Wallets] \u2013 Vision portfolio payload contained no tokens"
3036
+ );
3037
+ }
3038
+ return {
3039
+ username: resolveUsername(payload) ?? username,
3040
+ currency: normalizeString(
3041
+ payload?.currency
3042
+ )?.toUpperCase(),
3043
+ wallets: tokens
3044
+ };
3045
+ }
3046
+ });
3047
+ }
3048
+
3049
+ // src/modules/wallets/queries/use-get-account-wallet-list-query.ts
2657
3050
  function getAccountWalletListQueryOptions(username) {
2658
3051
  return reactQuery.queryOptions({
2659
3052
  queryKey: ["ecency-wallets", "list", username],
2660
3053
  enabled: !!username,
2661
3054
  queryFn: async () => {
3055
+ const portfolioQuery = getVisionPortfolioQueryOptions(username);
3056
+ const queryClient = sdk.getQueryClient();
3057
+ try {
3058
+ const portfolio = await queryClient.fetchQuery(portfolioQuery);
3059
+ const tokensFromPortfolio = portfolio.wallets.map(
3060
+ (asset) => asset.info.name
3061
+ );
3062
+ if (tokensFromPortfolio.length > 0) {
3063
+ return Array.from(new Set(tokensFromPortfolio));
3064
+ }
3065
+ } catch {
3066
+ }
2662
3067
  const accountQuery = sdk.getAccountFullQueryOptions(username);
2663
- await sdk.getQueryClient().fetchQuery({
3068
+ await queryClient.fetchQuery({
2664
3069
  queryKey: accountQuery.queryKey
2665
3070
  });
2666
- const account = sdk.getQueryClient().getQueryData(
3071
+ const account = queryClient.getQueryData(
2667
3072
  accountQuery.queryKey
2668
3073
  );
2669
3074
  if (account?.profile?.tokens instanceof Array) {
@@ -3109,17 +3514,33 @@ function getTronAssetGeneralInfoQueryOptions(username) {
3109
3514
  // src/modules/wallets/queries/get-account-wallet-asset-info-query-options.ts
3110
3515
  function getAccountWalletAssetInfoQueryOptions(username, asset, options2 = { refetch: false }) {
3111
3516
  const queryClient = sdk.getQueryClient();
3112
- const fetchQuery = async (queryOptions39) => {
3517
+ const fetchQuery = async (queryOptions40) => {
3113
3518
  if (options2.refetch) {
3114
- await queryClient.fetchQuery(queryOptions39);
3519
+ await queryClient.fetchQuery(queryOptions40);
3115
3520
  } else {
3116
- await queryClient.prefetchQuery(queryOptions39);
3521
+ await queryClient.prefetchQuery(queryOptions40);
3522
+ }
3523
+ return queryClient.getQueryData(queryOptions40.queryKey);
3524
+ };
3525
+ const portfolioQuery = getVisionPortfolioQueryOptions(username);
3526
+ const getPortfolioAssetInfo = async () => {
3527
+ try {
3528
+ const portfolio = await queryClient.fetchQuery(portfolioQuery);
3529
+ const assetInfo = portfolio.wallets.find(
3530
+ (assetItem) => assetItem.info.name === asset.toUpperCase()
3531
+ );
3532
+ return assetInfo?.info;
3533
+ } catch {
3534
+ return void 0;
3117
3535
  }
3118
- return queryClient.getQueryData(queryOptions39.queryKey);
3119
3536
  };
3120
3537
  return reactQuery.queryOptions({
3121
3538
  queryKey: ["ecency-wallets", "asset-info", username, asset],
3122
3539
  queryFn: async () => {
3540
+ const portfolioAssetInfo = await getPortfolioAssetInfo();
3541
+ if (portfolioAssetInfo) {
3542
+ return portfolioAssetInfo;
3543
+ }
3123
3544
  if (asset === "HIVE") {
3124
3545
  return fetchQuery(getHiveAssetGeneralInfoQueryOptions(username));
3125
3546
  } else if (asset === "HP") {
@@ -3169,15 +3590,38 @@ function getTokenOperationsQueryOptions(token, username, isForOwner = false) {
3169
3590
  queryKey: ["wallets", "token-operations", token, username, isForOwner],
3170
3591
  queryFn: async () => {
3171
3592
  const queryClient = sdk.getQueryClient();
3593
+ const normalizedToken = token.toUpperCase();
3594
+ const portfolioOperations = await (async () => {
3595
+ if (!isForOwner || !username) {
3596
+ return void 0;
3597
+ }
3598
+ try {
3599
+ const portfolio = await queryClient.fetchQuery(
3600
+ getVisionPortfolioQueryOptions(username)
3601
+ );
3602
+ const assetEntry = portfolio.wallets.find(
3603
+ (assetItem) => assetItem.info.name === normalizedToken
3604
+ );
3605
+ if (assetEntry?.operations.length) {
3606
+ return assetEntry.operations;
3607
+ }
3608
+ } catch {
3609
+ return void 0;
3610
+ }
3611
+ return void 0;
3612
+ })();
3613
+ if (portfolioOperations && portfolioOperations.length > 0) {
3614
+ return portfolioOperations;
3615
+ }
3172
3616
  const ensureAssetInfo = async () => {
3173
3617
  if (!isForOwner || !username) {
3174
3618
  return void 0;
3175
3619
  }
3176
3620
  return await queryClient.ensureQueryData(
3177
- getAccountWalletAssetInfoQueryOptions(username, token)
3621
+ getAccountWalletAssetInfoQueryOptions(username, normalizedToken)
3178
3622
  );
3179
3623
  };
3180
- switch (token) {
3624
+ switch (normalizedToken) {
3181
3625
  case "HIVE" /* Hive */: {
3182
3626
  const assetInfo = await ensureAssetInfo();
3183
3627
  const savingsBalance = assetInfo?.parts?.find(
@@ -3748,6 +4192,7 @@ exports.HIVE_OPERATION_ORDERS = HIVE_OPERATION_ORDERS;
3748
4192
  exports.NaiMap = NaiMap;
3749
4193
  exports.PointTransactionType = PointTransactionType;
3750
4194
  exports.Symbol = Symbol2;
4195
+ exports.broadcastWithWalletHiveAuth = broadcastWithWalletHiveAuth;
3751
4196
  exports.buildAptTx = buildAptTx;
3752
4197
  exports.buildEthTx = buildEthTx;
3753
4198
  exports.buildExternalTx = buildExternalTx;
@@ -3797,7 +4242,9 @@ exports.getSpkAssetGeneralInfoQueryOptions = getSpkAssetGeneralInfoQueryOptions;
3797
4242
  exports.getSpkMarketsQueryOptions = getSpkMarketsQueryOptions;
3798
4243
  exports.getTokenOperationsQueryOptions = getTokenOperationsQueryOptions;
3799
4244
  exports.getTokenPriceQueryOptions = getTokenPriceQueryOptions;
4245
+ exports.getVisionPortfolioQueryOptions = getVisionPortfolioQueryOptions;
3800
4246
  exports.getWallet = getWallet;
4247
+ exports.hasWalletHiveAuthBroadcast = hasWalletHiveAuthBroadcast;
3801
4248
  exports.isEmptyDate = isEmptyDate;
3802
4249
  exports.lockLarynx = lockLarynx;
3803
4250
  exports.mnemonicToSeedBip39 = mnemonicToSeedBip39;
@@ -3805,6 +4252,7 @@ exports.parseAsset = parseAsset;
3805
4252
  exports.powerDownHive = powerDownHive;
3806
4253
  exports.powerUpHive = powerUpHive;
3807
4254
  exports.powerUpLarynx = powerUpLarynx;
4255
+ exports.registerWalletHiveAuthBroadcast = registerWalletHiveAuthBroadcast;
3808
4256
  exports.resolveHiveOperationFilters = resolveHiveOperationFilters;
3809
4257
  exports.rewardSpk = rewardSpk;
3810
4258
  exports.signDigest = signDigest;