@bze/bze-ui-kit 1.0.5 → 1.0.7
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.d.mts +24 -1
- package/dist/index.d.ts +24 -1
- package/dist/index.js +120 -20
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +120 -21
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -1
package/dist/index.mjs
CHANGED
|
@@ -303,6 +303,10 @@ var getChainExplorerURL = (chainName) => {
|
|
|
303
303
|
var getLockerAddress = () => {
|
|
304
304
|
return process.env.NEXT_PUBLIC_LOCKER_ADDRESS || "bze1pc5zjcvhx3e8l305zjl72grytfa30r5mdypmw4";
|
|
305
305
|
};
|
|
306
|
+
var getGasMultiplier = () => {
|
|
307
|
+
const val = parseFloat(process.env.NEXT_PUBLIC_GAS_MULTIPLIER || "");
|
|
308
|
+
return isNaN(val) || val <= 0 ? 1.5 : val;
|
|
309
|
+
};
|
|
306
310
|
|
|
307
311
|
// src/storage/storage.ts
|
|
308
312
|
var TTL_NO_EXPIRY = 0;
|
|
@@ -1415,6 +1419,114 @@ var isPoolSupportedByValidator = (baseDenom, quoteDenom) => {
|
|
|
1415
1419
|
return supportedDenoms.includes(baseDenom) || supportedDenoms.includes(quoteDenom);
|
|
1416
1420
|
};
|
|
1417
1421
|
|
|
1422
|
+
// src/utils/ws_rpc_client.ts
|
|
1423
|
+
var socket = null;
|
|
1424
|
+
var activeUrl = "";
|
|
1425
|
+
var socketConnected = false;
|
|
1426
|
+
var connectingPromise = null;
|
|
1427
|
+
var msgId = 0;
|
|
1428
|
+
var reconnectAttempts = 0;
|
|
1429
|
+
var reconnectTimeout = null;
|
|
1430
|
+
var MAX_RECONNECT_ATTEMPTS = 10;
|
|
1431
|
+
var activeSubscriptions = /* @__PURE__ */ new Map();
|
|
1432
|
+
var handleMessage = (event) => {
|
|
1433
|
+
var _a2;
|
|
1434
|
+
try {
|
|
1435
|
+
const msg = JSON.parse(event.data);
|
|
1436
|
+
const id = String((_a2 = msg == null ? void 0 : msg.id) != null ? _a2 : "");
|
|
1437
|
+
if (id && activeSubscriptions.has(id) && msg.result && Object.keys(msg.result).length > 0) {
|
|
1438
|
+
activeSubscriptions.get(id).handler(msg.result);
|
|
1439
|
+
}
|
|
1440
|
+
} catch (e) {
|
|
1441
|
+
}
|
|
1442
|
+
};
|
|
1443
|
+
var resubscribeAll = () => {
|
|
1444
|
+
for (const [id, sub] of activeSubscriptions) {
|
|
1445
|
+
socket.send(JSON.stringify({
|
|
1446
|
+
jsonrpc: "2.0",
|
|
1447
|
+
method: "subscribe",
|
|
1448
|
+
id,
|
|
1449
|
+
params: { query: sub.query }
|
|
1450
|
+
}));
|
|
1451
|
+
}
|
|
1452
|
+
};
|
|
1453
|
+
var scheduleReconnect = () => {
|
|
1454
|
+
if (reconnectAttempts >= MAX_RECONNECT_ATTEMPTS) {
|
|
1455
|
+
console.error("[WS] Max reconnect attempts reached");
|
|
1456
|
+
return;
|
|
1457
|
+
}
|
|
1458
|
+
reconnectAttempts++;
|
|
1459
|
+
const delay = Math.min(1e3 * Math.pow(2, reconnectAttempts - 1), 3e4);
|
|
1460
|
+
reconnectTimeout = setTimeout(async () => {
|
|
1461
|
+
try {
|
|
1462
|
+
await openSocket(activeUrl);
|
|
1463
|
+
resubscribeAll();
|
|
1464
|
+
reconnectAttempts = 0;
|
|
1465
|
+
} catch (e) {
|
|
1466
|
+
scheduleReconnect();
|
|
1467
|
+
}
|
|
1468
|
+
}, delay);
|
|
1469
|
+
};
|
|
1470
|
+
var openSocket = (url) => {
|
|
1471
|
+
return new Promise((resolve, reject) => {
|
|
1472
|
+
const ws = new WebSocket(url);
|
|
1473
|
+
ws.onopen = () => {
|
|
1474
|
+
socket = ws;
|
|
1475
|
+
socketConnected = true;
|
|
1476
|
+
resolve();
|
|
1477
|
+
};
|
|
1478
|
+
ws.onmessage = handleMessage;
|
|
1479
|
+
ws.onclose = () => {
|
|
1480
|
+
socketConnected = false;
|
|
1481
|
+
scheduleReconnect();
|
|
1482
|
+
};
|
|
1483
|
+
ws.onerror = (err) => {
|
|
1484
|
+
socketConnected = false;
|
|
1485
|
+
reject(err);
|
|
1486
|
+
};
|
|
1487
|
+
});
|
|
1488
|
+
};
|
|
1489
|
+
var getOrCreateSocket = async (rpcEndpoint) => {
|
|
1490
|
+
const url = rpcEndpoint.replace(/\/?$/, "") + "/websocket";
|
|
1491
|
+
if (socket && socketConnected && activeUrl === url) return;
|
|
1492
|
+
if (connectingPromise && activeUrl === url) {
|
|
1493
|
+
return connectingPromise;
|
|
1494
|
+
}
|
|
1495
|
+
if (socket) {
|
|
1496
|
+
socket.onclose = null;
|
|
1497
|
+
socket.close(1e3, "Endpoint changed");
|
|
1498
|
+
socket = null;
|
|
1499
|
+
socketConnected = false;
|
|
1500
|
+
if (reconnectTimeout) {
|
|
1501
|
+
clearTimeout(reconnectTimeout);
|
|
1502
|
+
reconnectTimeout = null;
|
|
1503
|
+
}
|
|
1504
|
+
reconnectAttempts = 0;
|
|
1505
|
+
}
|
|
1506
|
+
activeUrl = url;
|
|
1507
|
+
connectingPromise = openSocket(url).finally(() => {
|
|
1508
|
+
connectingPromise = null;
|
|
1509
|
+
});
|
|
1510
|
+
return connectingPromise;
|
|
1511
|
+
};
|
|
1512
|
+
var subscribeToBlockchainEvents = async (rpcEndpoint, query, handler) => {
|
|
1513
|
+
await getOrCreateSocket(rpcEndpoint);
|
|
1514
|
+
const id = String(++msgId);
|
|
1515
|
+
activeSubscriptions.set(id, { query, handler });
|
|
1516
|
+
socket.send(JSON.stringify({ jsonrpc: "2.0", method: "subscribe", id, params: { query } }));
|
|
1517
|
+
return () => {
|
|
1518
|
+
activeSubscriptions.delete(id);
|
|
1519
|
+
if ((socket == null ? void 0 : socket.readyState) === WebSocket.OPEN) {
|
|
1520
|
+
socket.send(JSON.stringify({
|
|
1521
|
+
jsonrpc: "2.0",
|
|
1522
|
+
method: "unsubscribe",
|
|
1523
|
+
id: String(++msgId),
|
|
1524
|
+
params: { query }
|
|
1525
|
+
}));
|
|
1526
|
+
}
|
|
1527
|
+
};
|
|
1528
|
+
};
|
|
1529
|
+
|
|
1418
1530
|
// src/constants/market.ts
|
|
1419
1531
|
var EXCLUDED_MARKETS = {
|
|
1420
1532
|
"factory/bze1f0qgels0eu96ev6a67znu70q7rquy9eragn8nw/ucorey/factory/bze13gzq40che93tgfm9kzmkpjamah5nj0j73pyhqk/uvdl": true,
|
|
@@ -3913,8 +4025,7 @@ var useToast = () => {
|
|
|
3913
4025
|
};
|
|
3914
4026
|
|
|
3915
4027
|
// src/hooks/useTx.tsx
|
|
3916
|
-
import {
|
|
3917
|
-
import { toBase64 } from "@interchainjs/encoding";
|
|
4028
|
+
import { TxBody, SignerInfo } from "@bze/bzejs/cosmos/tx/v1beta1/tx";
|
|
3918
4029
|
import { useChain as useChain2 } from "@interchain-kit/react";
|
|
3919
4030
|
import BigNumber13 from "bignumber.js";
|
|
3920
4031
|
import { useCallback as useCallback11, useMemo as useMemo11, useState as useState3 } from "react";
|
|
@@ -3965,7 +4076,7 @@ var useTx = (chainName) => {
|
|
|
3965
4076
|
return isSigningClientReady;
|
|
3966
4077
|
}, [isSigningClientReady, signingClientError]);
|
|
3967
4078
|
const simulateFee = useCallback11(async (messages, memo) => {
|
|
3968
|
-
var _a2
|
|
4079
|
+
var _a2;
|
|
3969
4080
|
const gasPrice = 0.02;
|
|
3970
4081
|
const nativeDenom = getChainNativeAssetDenom();
|
|
3971
4082
|
const signer = signingClient;
|
|
@@ -3976,27 +4087,14 @@ var useTx = (chainName) => {
|
|
|
3976
4087
|
return { typeUrl, value: encodedValue };
|
|
3977
4088
|
});
|
|
3978
4089
|
const txBody = TxBody.fromPartial({ messages: encodedMessages, memo: memo != null ? memo : "" });
|
|
3979
|
-
const
|
|
3980
|
-
|
|
3981
|
-
|
|
3982
|
-
|
|
3983
|
-
const tx2 = Tx.fromPartial({ body: txBody, authInfo, signatures: [new Uint8Array(0)] });
|
|
3984
|
-
const txBytes = Tx.encode(tx2).finish();
|
|
3985
|
-
const restEndpoint = getSettings().endpoints.restEndpoint.replace(/\/$/, "");
|
|
3986
|
-
const simResponse = await fetch(`${restEndpoint}/cosmos/tx/v1beta1/simulate`, {
|
|
3987
|
-
method: "POST",
|
|
3988
|
-
headers: { "Content-Type": "application/json" },
|
|
3989
|
-
body: JSON.stringify({ tx_bytes: toBase64(txBytes) })
|
|
3990
|
-
});
|
|
3991
|
-
if (!simResponse.ok) {
|
|
3992
|
-
throw new Error(`Simulation request failed with status ${simResponse.status}`);
|
|
3993
|
-
}
|
|
3994
|
-
const simData = await simResponse.json();
|
|
3995
|
-
const gasEstimated = Number((_b2 = (_a2 = simData == null ? void 0 : simData.gas_info) == null ? void 0 : _a2.gas_used) != null ? _b2 : 0);
|
|
4090
|
+
const sequence = await signer.getSequence(address);
|
|
4091
|
+
const signerInfo = SignerInfo.fromPartial({ modeInfo: { single: { mode: 1 } }, sequence });
|
|
4092
|
+
const { gasInfo } = await signer.simulateByTxBody(txBody, [signerInfo]);
|
|
4093
|
+
const gasEstimated = Number((_a2 = gasInfo == null ? void 0 : gasInfo.gasUsed) != null ? _a2 : BigInt(0));
|
|
3996
4094
|
if (gasEstimated === 0) {
|
|
3997
4095
|
throw new Error("Gas simulation returned 0");
|
|
3998
4096
|
}
|
|
3999
|
-
const gasAmount = BigNumber13(gasEstimated).multipliedBy(
|
|
4097
|
+
const gasAmount = BigNumber13(gasEstimated).multipliedBy(getGasMultiplier());
|
|
4000
4098
|
const gasPayment = gasAmount.multipliedBy(gasPrice);
|
|
4001
4099
|
const nativeFee = {
|
|
4002
4100
|
amount: coins(gasPayment.toFixed(0).toString(), nativeDenom),
|
|
@@ -5462,6 +5560,7 @@ export {
|
|
|
5462
5560
|
shortNumberFormat,
|
|
5463
5561
|
sleep,
|
|
5464
5562
|
stringTruncateFromCenter,
|
|
5563
|
+
subscribeToBlockchainEvents,
|
|
5465
5564
|
toBigNumber,
|
|
5466
5565
|
toPercentage,
|
|
5467
5566
|
truncateAddress,
|