bandkit 1.0.0 → 1.0.2

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.
Files changed (56) hide show
  1. package/README.md +260 -18
  2. package/dist/BandPanel.d.ts.map +1 -1
  3. package/dist/BandPanel.js +253 -80
  4. package/dist/BandPanel.js.map +1 -1
  5. package/dist/ContractEventFeed.d.ts +7 -0
  6. package/dist/ContractEventFeed.d.ts.map +1 -0
  7. package/dist/ContractEventFeed.js +76 -0
  8. package/dist/ContractEventFeed.js.map +1 -0
  9. package/dist/GasBadge.d.ts +6 -0
  10. package/dist/GasBadge.d.ts.map +1 -0
  11. package/dist/GasBadge.js +37 -0
  12. package/dist/GasBadge.js.map +1 -0
  13. package/dist/OrderBookWidget.d.ts +8 -0
  14. package/dist/OrderBookWidget.d.ts.map +1 -0
  15. package/dist/OrderBookWidget.js +92 -0
  16. package/dist/OrderBookWidget.js.map +1 -0
  17. package/dist/RegimeBadge.d.ts +6 -0
  18. package/dist/RegimeBadge.d.ts.map +1 -0
  19. package/dist/RegimeBadge.js +39 -0
  20. package/dist/RegimeBadge.js.map +1 -0
  21. package/dist/TradeTape.d.ts +8 -0
  22. package/dist/TradeTape.d.ts.map +1 -0
  23. package/dist/TradeTape.js +67 -0
  24. package/dist/TradeTape.js.map +1 -0
  25. package/dist/defaultStrategyWallet.d.ts +3 -0
  26. package/dist/defaultStrategyWallet.d.ts.map +1 -0
  27. package/dist/defaultStrategyWallet.js +39 -0
  28. package/dist/defaultStrategyWallet.js.map +1 -0
  29. package/dist/index.d.ts +10 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +13 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/useBinanceOrderBook.d.ts +27 -0
  34. package/dist/useBinanceOrderBook.d.ts.map +1 -0
  35. package/dist/useBinanceOrderBook.js +95 -0
  36. package/dist/useBinanceOrderBook.js.map +1 -0
  37. package/dist/useBinanceTrades.d.ts +23 -0
  38. package/dist/useBinanceTrades.d.ts.map +1 -0
  39. package/dist/useBinanceTrades.js +77 -0
  40. package/dist/useBinanceTrades.js.map +1 -0
  41. package/dist/useGasPrice.d.ts +18 -0
  42. package/dist/useGasPrice.d.ts.map +1 -0
  43. package/dist/useGasPrice.js +44 -0
  44. package/dist/useGasPrice.js.map +1 -0
  45. package/dist/useStrategyContractDeployment.d.ts.map +1 -1
  46. package/dist/useStrategyContractDeployment.js +2 -1
  47. package/dist/useStrategyContractDeployment.js.map +1 -1
  48. package/dist/useStrategyContractEvents.d.ts +23 -0
  49. package/dist/useStrategyContractEvents.d.ts.map +1 -0
  50. package/dist/useStrategyContractEvents.js +79 -0
  51. package/dist/useStrategyContractEvents.js.map +1 -0
  52. package/dist/useVolatilityRegime.d.ts +17 -0
  53. package/dist/useVolatilityRegime.d.ts.map +1 -0
  54. package/dist/useVolatilityRegime.js +48 -0
  55. package/dist/useVolatilityRegime.js.map +1 -0
  56. package/package.json +1 -1
package/dist/BandPanel.js CHANGED
@@ -1,91 +1,142 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useEffect, useMemo, useState } from "react";
3
3
  import { mainnet } from "wagmi/chains";
4
4
  import { useBandDashboard } from "./useBandDashboard.js";
5
+ const palette = {
6
+ bg: "#0a0a0a",
7
+ surface: "#111113",
8
+ surfaceMuted: "#0f0f11",
9
+ border: "#1f1f23",
10
+ borderActive: "#2a2a30",
11
+ borderDone: "#143521",
12
+ text: "#f5f5f7",
13
+ textMuted: "#9ca3af",
14
+ textDim: "#52525b",
15
+ accent: "#3b82f6",
16
+ accentMuted: "#1e3a8a",
17
+ success: "#10b981",
18
+ successMuted: "#064e3b",
19
+ danger: "#ef4444",
20
+ dangerMuted: "#7f1d1d"
21
+ };
22
+ const baseButton = {
23
+ borderRadius: 8,
24
+ cursor: "pointer",
25
+ font: "inherit",
26
+ fontSize: 14,
27
+ fontWeight: 600,
28
+ letterSpacing: "0.01em",
29
+ minHeight: 44,
30
+ padding: "0 16px",
31
+ transition: "opacity 120ms ease"
32
+ };
33
+ const primaryButton = {
34
+ ...baseButton,
35
+ background: palette.accent,
36
+ border: `1px solid ${palette.accent}`,
37
+ color: "#ffffff"
38
+ };
39
+ const successButton = {
40
+ ...baseButton,
41
+ background: palette.success,
42
+ border: `1px solid ${palette.success}`,
43
+ color: "#0a0a0a"
44
+ };
45
+ const dangerButton = {
46
+ ...baseButton,
47
+ background: "transparent",
48
+ border: `1px solid ${palette.dangerMuted}`,
49
+ color: palette.danger
50
+ };
51
+ const ghostButton = {
52
+ ...baseButton,
53
+ background: "transparent",
54
+ border: `1px solid ${palette.border}`,
55
+ color: palette.textMuted
56
+ };
57
+ const quickAmounts = ["0.0001", "0.0005", "0.001", "0.005"];
5
58
  const usdFormatter = new Intl.NumberFormat("en-US", {
6
59
  currency: "USD",
7
60
  maximumFractionDigits: 2,
8
61
  minimumFractionDigits: 2,
9
62
  style: "currency"
10
63
  });
11
- const buttonStyle = {
12
- border: "1px solid #3b82f6",
13
- borderRadius: 6,
14
- background: "#2563eb",
15
- color: "#ffffff",
16
- cursor: "pointer",
17
- fontWeight: 700,
18
- minHeight: 42,
19
- padding: "0 14px"
20
- };
21
- const secondaryButtonStyle = {
22
- ...buttonStyle,
23
- background: "#111827",
24
- border: "1px solid #334155",
25
- color: "#e5e7eb"
26
- };
27
- const quickAmounts = ["0.0001", "0.0005", "0.001", "0.002"];
28
64
  function formatUsd(value) {
29
65
  return value === null || !Number.isFinite(value) ? "--" : usdFormatter.format(value);
30
66
  }
31
- export function BandPanel({ strategyContractAddress, strategyWalletAddress, chainId = mainnet.id, className, title = "BandKit Engine", onSubmitted, onStrategyContractDeployed }) {
67
+ function shortAddress(addr) {
68
+ if (!addr)
69
+ return "—";
70
+ return `${addr.slice(0, 6)}…${addr.slice(-4)}`;
71
+ }
72
+ export function BandPanel({ strategyContractAddress, strategyWalletAddress, chainId = mainnet.id, className, title = "Get started", onSubmitted, onStrategyContractDeployed }) {
32
73
  const [fundAmountEth, setFundAmountEth] = useState("0.0001");
33
74
  const [localError, setLocalError] = useState();
34
75
  const dashboard = useBandDashboard({ strategyContractAddress, chainId, deployment: { strategyWalletAddress } });
35
76
  const { engine, deployment, price, strategyContract, wallet } = dashboard;
36
77
  const effectiveStrategyContractAddress = strategyContractAddress ?? deployment.strategyContractAddress;
37
- const isBusy = strategyContract.isWritePending || strategyContract.isConfirming || deployment.isDeployPending || deployment.isDeploying;
78
+ const isBusy = strategyContract.isWritePending ||
79
+ strategyContract.isConfirming ||
80
+ deployment.isDeployPending ||
81
+ deployment.isDeploying;
38
82
  const requestedFundAmountEth = Number(fundAmountEth);
39
83
  const walletBalanceEth = Number(wallet.balanceEth);
40
84
  const hasValidFundAmount = Number.isFinite(requestedFundAmountEth) && requestedFundAmountEth > 0;
41
85
  const hasEnoughWalletEth = hasValidFundAmount && Number.isFinite(walletBalanceEth) && requestedFundAmountEth < walletBalanceEth;
42
- const status = useMemo(() => {
43
- if (!effectiveStrategyContractAddress) {
44
- if (deployment.deployStatus === "cancelled" || deployment.deployStatus === "failed" || deployment.deployStatus === "timeout") {
86
+ const isContractLive = Boolean(effectiveStrategyContractAddress);
87
+ const isContractFunded = strategyContract.balanceWei > 0n;
88
+ const isEngineActive = engine.isActive;
89
+ // ---- Stage state machine ------------------------------------------------
90
+ const stage1 = strategyContract.isConnected ? "done" : "active";
91
+ const stage2 = !strategyContract.isConnected
92
+ ? "locked"
93
+ : isContractLive
94
+ ? "done"
95
+ : "active";
96
+ const stage3 = !isContractLive ? "locked" : isContractFunded ? "done" : "active";
97
+ const stage4 = !isContractLive ? "locked" : !isContractFunded ? "locked" : "active";
98
+ const canDeploy = !isContractLive && deployment.isConnected && !isBusy;
99
+ const canFund = isContractLive &&
100
+ strategyContract.isConnected &&
101
+ strategyContract.isCorrectChain &&
102
+ !isBusy &&
103
+ !strategyContract.depositsPaused &&
104
+ hasValidFundAmount &&
105
+ hasEnoughWalletEth;
106
+ const canStart = stage4 === "active" &&
107
+ !isEngineActive &&
108
+ !isBusy &&
109
+ strategyContract.isCorrectChain;
110
+ const canStop = isEngineActive && !isBusy && strategyContract.isCorrectChain;
111
+ const canWithdraw = isContractLive && isContractFunded && !isBusy && strategyContract.isCorrectChain;
112
+ const headerStatus = useMemo(() => {
113
+ if (isBusy) {
114
+ if (deployment.isDeploying)
45
115
  return deployment.deployStatusText;
46
- }
47
- return deployment.isDeploying ? deployment.deployStatusText : "Deploy strategy contract";
48
- }
49
- if (deployment.contractStatus === "checking" || deployment.contractStatus === "missing" || deployment.contractStatus === "unknown") {
50
- return deployment.contractStatusText;
116
+ return strategyContract.transactionStatusText;
51
117
  }
52
118
  if (!strategyContract.isConnected)
53
- return "Connect wallet";
119
+ return "Connect a wallet to begin";
54
120
  if (!strategyContract.isCorrectChain)
55
121
  return "Switch to Ethereum mainnet";
56
- if (strategyContract.transactionStatus === "cancelled" || strategyContract.transactionStatus === "failed" || strategyContract.transactionStatus === "confirmed") {
57
- return strategyContract.transactionStatusText;
58
- }
59
- if (isBusy)
60
- return strategyContract.isWritePending ? "Confirm in wallet" : "Waiting for confirmation";
61
- if (hasValidFundAmount && !hasEnoughWalletEth)
62
- return "Amount exceeds wallet ETH balance";
63
- if (engine.isActive)
64
- return "Engine active";
65
- if (engine.isFunded)
66
- return "Funded, ready to activate";
67
- return "Ready to fund";
122
+ if (stage2 === "active")
123
+ return "Ready to deploy strategy contract";
124
+ if (stage3 === "active")
125
+ return "Ready to fund strategy contract";
126
+ if (isEngineActive)
127
+ return "Engine active — bot is trading";
128
+ return "Engine paused";
68
129
  }, [
69
- engine.isFunded,
70
- engine.isActive,
71
- deployment.contractStatus,
72
- deployment.contractStatusText,
73
- deployment.deployStatus,
74
130
  deployment.deployStatusText,
75
- hasEnoughWalletEth,
76
- hasValidFundAmount,
77
131
  deployment.isDeploying,
78
- effectiveStrategyContractAddress,
79
132
  isBusy,
80
- strategyContract.transactionStatus,
81
- strategyContract.transactionStatusText,
133
+ isEngineActive,
134
+ stage2,
135
+ stage3,
82
136
  strategyContract.isConnected,
83
137
  strategyContract.isCorrectChain,
84
- strategyContract.isWritePending
138
+ strategyContract.transactionStatusText
85
139
  ]);
86
- const canDeploy = !effectiveStrategyContractAddress && deployment.isConnected && !isBusy;
87
- const canUseStrategyContract = Boolean(effectiveStrategyContractAddress) && strategyContract.isConnected && strategyContract.isCorrectChain && !isBusy;
88
- const canFund = canUseStrategyContract && !strategyContract.depositsPaused && hasValidFundAmount && hasEnoughWalletEth;
89
140
  async function runAction(action, task) {
90
141
  setLocalError(undefined);
91
142
  try {
@@ -111,32 +162,154 @@ export function BandPanel({ strategyContractAddress, strategyWalletAddress, chai
111
162
  }
112
163
  }, [deployment.strategyContractAddress, onStrategyContractDeployed, strategyContractAddress]);
113
164
  return (_jsxs("section", { className: className, style: {
114
- background: "#020617",
115
- border: "1px solid #1e293b",
116
- borderRadius: 8,
117
- boxShadow: "0 18px 60px rgba(2, 6, 23, 0.35)",
118
- color: "#e5e7eb",
165
+ background: palette.bg,
166
+ border: `1px solid ${palette.border}`,
167
+ borderRadius: 14,
168
+ boxShadow: "0 20px 60px rgba(0, 0, 0, 0.55)",
169
+ color: palette.text,
170
+ display: "grid",
171
+ fontFamily: "system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",
172
+ gap: 18,
173
+ maxWidth: 560,
174
+ padding: 22
175
+ }, children: [_jsx("style", { children: `@keyframes bandkitPulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.45; transform: scale(1.35); } }` }), _jsxs("header", { style: { display: "grid", gap: 4 }, children: [_jsxs("div", { style: { alignItems: "center", display: "flex", justifyContent: "space-between" }, children: [_jsxs("div", { style: { alignItems: "center", display: "flex", gap: 10 }, children: [_jsx("h2", { style: { fontSize: 20, fontWeight: 700, lineHeight: 1.2, margin: 0 }, children: title }), isEngineActive ? _jsx(EnginePulse, {}) : null] }), _jsx(PriceBadge, { price: price.priceText, change: price.changePercent24hText })] }), _jsx("div", { style: { color: palette.textMuted, fontSize: 13 }, children: headerStatus })] }), _jsx(StageRail, { stages: [stage1, stage2, stage3, stage4], labels: ["Wallet", "Deploy", "Fund", "Run"] }), _jsx(StatGrid, { items: [
176
+ { label: "Wallet ETH", value: `${Number(wallet.balanceEth).toFixed(6)} ETH` },
177
+ { label: "Contract ETH", value: `${Number(strategyContract.balanceEth).toFixed(6)} ETH` },
178
+ { label: "Allocated", value: `${Number(engine.allocatedEth).toFixed(6)} ETH` },
179
+ { label: "Allocated value", value: formatUsd(engine.allocatedUsd) }
180
+ ] }), _jsx(Stage, { index: 1, state: stage1, title: "Connect Wallet", description: stage1 === "done"
181
+ ? `Connected ${shortAddress(strategyContract.accountAddress)}`
182
+ : "Connect a wallet using the button above to begin." }), _jsxs(Stage, { index: 2, state: stage2, title: "Deploy Smart Contract", description: stage2 === "done"
183
+ ? `Live at ${shortAddress(effectiveStrategyContractAddress)}`
184
+ : "Deploys BandStrategy.sol from your connected wallet. One-time setup.", children: [stage2 === "active" ? (_jsx("button", { disabled: !canDeploy, onClick: () => void deployStrategyContract(), style: { ...primaryButton, opacity: canDeploy ? 1 : 0.5, width: "100%" }, type: "button", children: "Deploy Smart Contract" })) : null, stage2 === "done" && effectiveStrategyContractAddress ? (_jsx(EtherscanLink, { kind: "address", hash: effectiveStrategyContractAddress, label: "View contract on Etherscan" })) : null, deployment.deployHash && stage2 === "active" ? (_jsx(EtherscanLink, { kind: "tx", hash: deployment.deployHash, label: "View deployment transaction" })) : null] }), _jsx(Stage, { index: 3, state: stage3, title: "Fund Smart Contract", description: stage3 === "done"
185
+ ? `Contract holds ${Number(strategyContract.balanceEth).toFixed(6)} ETH`
186
+ : "Send ETH from your wallet into the strategy contract. The bot trades using these funds.", children: stage3 !== "locked" ? (_jsxs(_Fragment, { children: [_jsxs("label", { style: { display: "grid", fontSize: 13, fontWeight: 600, gap: 6 }, children: ["Amount ETH", _jsx("input", { inputMode: "decimal", min: "0", onChange: (event) => setFundAmountEth(event.target.value), placeholder: "0.0001", step: "any", style: {
187
+ background: palette.surfaceMuted,
188
+ border: `1px solid ${palette.border}`,
189
+ borderRadius: 8,
190
+ color: palette.text,
191
+ font: "inherit",
192
+ fontSize: 14,
193
+ minHeight: 44,
194
+ padding: "0 14px"
195
+ }, type: "number", value: fundAmountEth })] }), _jsx("div", { style: { display: "grid", gap: 6, gridTemplateColumns: "repeat(4, minmax(0, 1fr))" }, children: quickAmounts.map((amount) => (_jsx("button", { onClick: () => setFundAmountEth(amount), style: {
196
+ ...ghostButton,
197
+ fontSize: 12,
198
+ minHeight: 34,
199
+ opacity: fundAmountEth === amount ? 1 : 0.7,
200
+ padding: "0 6px"
201
+ }, type: "button", children: amount }, amount))) }), _jsx("button", { disabled: !canFund, onClick: () => void runAction("deposit", () => strategyContract.depositEth(fundAmountEth)), style: { ...primaryButton, opacity: canFund ? 1 : 0.5, width: "100%" }, type: "button", children: stage3 === "done" ? "Add More Funds" : "Fund Smart Contract" }), hasValidFundAmount && !hasEnoughWalletEth ? (_jsx(Hint, { tone: "warn", children: "Amount must be less than your wallet ETH balance so gas can also be paid." })) : null] })) : null }), _jsx(Stage, { index: 4, state: stage4, title: "Run Bot", description: stage4 === "locked"
202
+ ? "Fund the contract first to enable the engine."
203
+ : isEngineActive
204
+ ? "Engine is ACTIVE — the off-chain searcher can now execute trades against contract funds."
205
+ : "Engine is PAUSED. Press Start to authorize trading against contract funds.", children: stage4 !== "locked" ? (_jsxs(_Fragment, { children: [_jsxs("div", { style: { display: "grid", gap: 8, gridTemplateColumns: "1fr 1fr" }, children: [_jsx("button", { disabled: !canStart, onClick: () => void runAction("activateStrategyEngine", strategyContract.activateStrategyEngine), style: { ...successButton, opacity: canStart ? 1 : 0.5 }, type: "button", children: "\u25B6 Start Bot" }), _jsx("button", { disabled: !canStop, onClick: () => void runAction("deactivateStrategyEngine", strategyContract.deactivateStrategyEngine), style: { ...dangerButton, opacity: canStop ? 1 : 0.5 }, type: "button", children: "\u25A0 Stop Bot" })] }), _jsx("button", { disabled: !canWithdraw, onClick: () => void runAction("withdrawAll", strategyContract.withdrawAll), style: { ...ghostButton, opacity: canWithdraw ? 1 : 0.5, width: "100%" }, type: "button", children: "Withdraw All Contract ETH to Wallet" })] })) : null }), strategyContract.pendingHash ? (_jsx(EtherscanLink, { kind: "tx", hash: strategyContract.pendingHash, label: "View latest transaction" })) : null, localError || deployment.error || strategyContract.error || price.error || wallet.error ? (_jsx(Hint, { tone: "error", children: localError ??
206
+ deployment.error?.message ??
207
+ strategyContract.error?.message ??
208
+ price.error ??
209
+ wallet.error?.message })) : null, _jsx("footer", { style: { borderTop: `1px solid ${palette.border}`, color: palette.textDim, fontSize: 12, paddingTop: 14 }, children: "BandKit deploys and funds a strategy contract from your browser. The actual trading engine runs as a separate Node process (engine/executor-searcher.js) on a server you control. This UI controls deploy, fund, start, stop, and withdraw \u2014 not trade execution itself." })] }));
210
+ }
211
+ // ---- Sub-components ------------------------------------------------------
212
+ function StageRail({ stages, labels }) {
213
+ return (_jsx("div", { style: { display: "grid", gap: 6, gridTemplateColumns: `repeat(${stages.length}, 1fr)` }, children: stages.map((state, i) => {
214
+ const color = state === "done" ? palette.success : state === "active" ? palette.accent : palette.border;
215
+ return (_jsxs("div", { style: { display: "grid", gap: 6 }, children: [_jsx("div", { style: { background: color, borderRadius: 999, height: 3 } }), _jsxs("div", { style: {
216
+ color: state === "locked" ? palette.textDim : palette.textMuted,
217
+ fontSize: 11,
218
+ fontWeight: 600,
219
+ letterSpacing: "0.06em",
220
+ textTransform: "uppercase"
221
+ }, children: [i + 1, ". ", labels[i]] })] }, i));
222
+ }) }));
223
+ }
224
+ function StatGrid({ items }) {
225
+ return (_jsx("div", { style: {
226
+ background: palette.surface,
227
+ border: `1px solid ${palette.border}`,
228
+ borderRadius: 10,
119
229
  display: "grid",
120
- gap: 16,
121
- maxWidth: 520,
122
- padding: 18
123
- }, children: [_jsxs("header", { style: { display: "grid", gap: 6 }, children: [_jsx("h2", { style: { fontSize: 18, lineHeight: 1.2, margin: 0 }, children: title }), _jsxs("div", { style: { color: "#94a3b8", fontSize: 14 }, children: ["Status: ", status] })] }), _jsxs("div", { style: { display: "grid", gap: 8 }, children: [_jsx(Row, { label: "Strategy contract", value: effectiveStrategyContractAddress ? `${effectiveStrategyContractAddress.slice(0, 6)}...${effectiveStrategyContractAddress.slice(-4)}` : "Not deployed" }), _jsx(Row, { label: "Strategy destination", value: strategyContract.strategyWallet ? `${strategyContract.strategyWallet.slice(0, 6)}...${strategyContract.strategyWallet.slice(-4)}` : "Not loaded" }), _jsx(Row, { label: "ETH / USDT", value: price.priceText }), _jsx(Row, { label: "24h change", value: price.changePercent24hText }), _jsx(Row, { label: "Market status", value: price.status }), _jsx(Row, { label: "Wallet ETH", value: `${Number(wallet.balanceEth).toFixed(6)} ETH` }), _jsx(Row, { label: "Contract ETH", value: `${Number(strategyContract.balanceEth).toFixed(6)} ETH` }), _jsx(Row, { label: "Allocated total", value: `${Number(engine.allocatedEth).toFixed(6)} ETH` }), _jsx(Row, { label: "Allocated value", value: formatUsd(engine.allocatedUsd) })] }), !effectiveStrategyContractAddress ? (_jsx("button", { disabled: !canDeploy, onClick: () => void deployStrategyContract(), style: { ...buttonStyle, opacity: canDeploy ? 1 : 0.5 }, type: "button", children: "Deploy Strategy Contract" })) : null, deployment.deployHash && !effectiveStrategyContractAddress ? (_jsx("a", { href: `https://etherscan.io/tx/${deployment.deployHash}`, rel: "noreferrer", style: { color: "#60a5fa", fontSize: 14, overflowWrap: "anywhere" }, target: "_blank", children: "View deployment transaction" })) : null, _jsxs("div", { style: { borderTop: "1px solid #1e293b", display: "grid", gap: 10, paddingTop: 14 }, children: [_jsx("h3", { style: { fontSize: 15, lineHeight: 1.2, margin: 0 }, children: "Fund Contract" }), _jsxs("label", { style: { display: "grid", gap: 6, fontSize: 14, fontWeight: 700 }, children: ["Amount ETH", _jsx("input", { inputMode: "decimal", min: "0", onChange: (event) => setFundAmountEth(event.target.value), placeholder: "0.0001", step: "any", style: {
124
- background: "#0f172a",
125
- border: "1px solid #334155",
126
- borderRadius: 6,
127
- color: "#e5e7eb",
128
- font: "inherit",
129
- minHeight: 42,
130
- padding: "0 12px"
131
- }, type: "number", value: fundAmountEth })] }), _jsx("div", { style: { display: "grid", gap: 6, gridTemplateColumns: "repeat(4, minmax(0, 1fr))" }, children: quickAmounts.map((amount) => (_jsx("button", { onClick: () => setFundAmountEth(amount), style: {
132
- ...secondaryButtonStyle,
133
- fontSize: 12,
134
- minHeight: 34,
135
- opacity: fundAmountEth === amount ? 1 : 0.75,
136
- padding: "0 8px"
137
- }, type: "button", children: amount }, amount))) }), _jsx("button", { disabled: !canFund, onClick: () => void runAction("deposit", () => strategyContract.depositEth(fundAmountEth)), style: { ...buttonStyle, opacity: canFund ? 1 : 0.5 }, type: "button", children: "Fund Contract" }), hasValidFundAmount && !hasEnoughWalletEth ? (_jsx("div", { style: { color: "#fca5a5", fontSize: 13 }, children: "Amount must be lower than wallet ETH balance so gas can also be paid." })) : null] }), _jsxs("div", { style: { borderTop: "1px solid #1e293b", display: "grid", gap: 10, paddingTop: 14 }, children: [_jsx("h3", { style: { fontSize: 15, lineHeight: 1.2, margin: 0 }, children: "Strategy Engine" }), _jsxs("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr", gap: 8 }, children: [_jsx("button", { disabled: !canUseStrategyContract || engine.isActive || strategyContract.balanceWei === 0n, onClick: () => void runAction("activateStrategyEngine", strategyContract.activateStrategyEngine), style: { ...buttonStyle, opacity: canUseStrategyContract && !engine.isActive && strategyContract.balanceWei > 0n ? 1 : 0.5 }, type: "button", children: "Activate Engine" }), _jsx("button", { disabled: !canUseStrategyContract || !engine.isActive, onClick: () => void runAction("deactivateStrategyEngine", strategyContract.deactivateStrategyEngine), style: { ...buttonStyle, opacity: canUseStrategyContract && engine.isActive ? 1 : 0.5 }, type: "button", children: "Pause Engine" })] }), _jsx("button", { disabled: !canUseStrategyContract || strategyContract.balanceWei === 0n, onClick: () => void runAction("withdrawAll", strategyContract.withdrawAll), style: { ...secondaryButtonStyle, opacity: canUseStrategyContract && strategyContract.balanceWei > 0n ? 1 : 0.5 }, type: "button", children: "Withdraw Available ETH" })] }), _jsx("div", { style: { color: "#94a3b8", fontSize: 13, lineHeight: 1.4 }, children: "Fund Contract holds ETH in the strategy contract. Activate Engine commits available contract ETH to the configured strategy destination. Pass a BandExecutor address for executable strategy funding; otherwise dashboard deployment uses the connected wallet as the destination. Withdraw applies only to ETH still held in the contract. Inspect the deployed contract and wallet transaction before confirming." }), strategyContract.pendingHash ? (_jsx("a", { href: `https://etherscan.io/tx/${strategyContract.pendingHash}`, rel: "noreferrer", style: { color: "#60a5fa", fontSize: 14, overflowWrap: "anywhere" }, target: "_blank", children: "View transaction" })) : null, localError || deployment.error || strategyContract.error || price.error || wallet.error ? (_jsx("div", { style: { color: "#fca5a5", fontSize: 14 }, children: localError ?? deployment.error?.message ?? strategyContract.error?.message ?? price.error ?? wallet.error?.message })) : null] }));
230
+ gap: 1,
231
+ gridTemplateColumns: "1fr 1fr",
232
+ overflow: "hidden"
233
+ }, children: items.map((item) => (_jsxs("div", { style: { background: palette.surface, display: "grid", gap: 2, padding: "10px 14px" }, children: [_jsx("span", { style: { color: palette.textDim, fontSize: 11, letterSpacing: "0.04em", textTransform: "uppercase" }, children: item.label }), _jsx("strong", { style: { fontSize: 14, fontWeight: 600 }, children: item.value })] }, item.label))) }));
138
234
  }
139
- function Row({ label, value }) {
140
- return (_jsxs("div", { style: { display: "flex", justifyContent: "space-between", gap: 12 }, children: [_jsx("span", { children: label }), _jsx("strong", { children: value })] }));
235
+ function Stage({ index, state, title, description, children }) {
236
+ const borderColor = state === "done" ? palette.borderDone : state === "active" ? palette.borderActive : palette.border;
237
+ const badgeColor = state === "done" ? palette.success : state === "active" ? palette.accent : palette.textDim;
238
+ return (_jsxs("article", { style: {
239
+ background: palette.surface,
240
+ border: `1px solid ${borderColor}`,
241
+ borderRadius: 10,
242
+ display: "grid",
243
+ gap: 12,
244
+ opacity: state === "locked" ? 0.5 : 1,
245
+ padding: 16
246
+ }, children: [_jsxs("div", { style: { alignItems: "center", display: "flex", gap: 10 }, children: [_jsx("span", { style: {
247
+ alignItems: "center",
248
+ background: state === "done" ? palette.successMuted : state === "active" ? palette.accentMuted : "transparent",
249
+ border: `1px solid ${badgeColor}`,
250
+ borderRadius: 999,
251
+ color: badgeColor,
252
+ display: "inline-flex",
253
+ fontSize: 12,
254
+ fontWeight: 700,
255
+ height: 24,
256
+ justifyContent: "center",
257
+ width: 24
258
+ }, children: state === "done" ? "✓" : index }), _jsxs("div", { style: { display: "grid", gap: 2 }, children: [_jsx("strong", { style: { fontSize: 15, fontWeight: 700 }, children: title }), _jsx("span", { style: { color: palette.textMuted, fontSize: 12 }, children: description })] })] }), children ? _jsx("div", { style: { display: "grid", gap: 10 }, children: children }) : null] }));
259
+ }
260
+ function EnginePulse() {
261
+ return (_jsxs("span", { style: {
262
+ alignItems: "center",
263
+ background: "rgba(16, 185, 129, 0.12)",
264
+ border: `1px solid ${palette.success}66`,
265
+ borderRadius: 999,
266
+ color: palette.success,
267
+ display: "inline-flex",
268
+ fontSize: 10,
269
+ fontWeight: 700,
270
+ gap: 6,
271
+ letterSpacing: "0.08em",
272
+ padding: "3px 10px"
273
+ }, children: [_jsx("span", { "aria-hidden": true, style: {
274
+ animation: "bandkitPulse 1.4s ease-in-out infinite",
275
+ background: palette.success,
276
+ borderRadius: 999,
277
+ height: 6,
278
+ width: 6
279
+ } }), "ACTIVE"] }));
280
+ }
281
+ function PriceBadge({ price, change }) {
282
+ return (_jsxs("div", { style: {
283
+ alignItems: "center",
284
+ background: palette.surface,
285
+ border: `1px solid ${palette.border}`,
286
+ borderRadius: 999,
287
+ color: palette.textMuted,
288
+ display: "inline-flex",
289
+ fontSize: 12,
290
+ fontWeight: 600,
291
+ gap: 8,
292
+ padding: "4px 12px"
293
+ }, children: [_jsx("span", { children: "ETH" }), _jsx("strong", { style: { color: palette.text }, children: price }), _jsx("span", { style: { color: change.trim().startsWith("-") ? palette.danger : palette.success }, children: change })] }));
294
+ }
295
+ function EtherscanLink({ kind, hash, label }) {
296
+ return (_jsxs("a", { href: `https://etherscan.io/${kind}/${hash}`, rel: "noreferrer", style: {
297
+ color: palette.accent,
298
+ fontSize: 13,
299
+ overflowWrap: "anywhere",
300
+ textDecoration: "none"
301
+ }, target: "_blank", children: [label, " \u2192"] }));
302
+ }
303
+ function Hint({ tone, children }) {
304
+ const color = tone === "error" ? palette.danger : "#fbbf24";
305
+ const bg = tone === "error" ? "rgba(239, 68, 68, 0.08)" : "rgba(251, 191, 36, 0.08)";
306
+ return (_jsx("div", { style: {
307
+ background: bg,
308
+ border: `1px solid ${color}33`,
309
+ borderRadius: 8,
310
+ color,
311
+ fontSize: 13,
312
+ padding: "10px 12px"
313
+ }, children: children }));
141
314
  }
142
315
  //# sourceMappingURL=BandPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BandPanel.js","sourceRoot":"","sources":["../src/BandPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BandPanel.js","sourceRoot":"","sources":["../src/BandPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type UseStrategyContractEventsOptions } from "./useStrategyContractEvents.js";
2
+ export type ContractEventFeedProps = UseStrategyContractEventsOptions & {
3
+ className?: string;
4
+ title?: string;
5
+ };
6
+ export declare function ContractEventFeed({ className, title, ...hookOptions }: ContractEventFeedProps): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=ContractEventFeed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContractEventFeed.d.ts","sourceRoot":"","sources":["../src/ContractEventFeed.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gCAAgC,EACtC,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,sBAAsB,GAAG,gCAAgC,GAAG;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAmCF,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,KAA2B,EAAE,GAAG,WAAW,EAAE,EAAE,sBAAsB,2CAuCnH"}
@@ -0,0 +1,76 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useStrategyContractEvents } from "./useStrategyContractEvents.js";
3
+ const palette = {
4
+ bg: "#0a0a0a",
5
+ surface: "#111113",
6
+ border: "#1f1f23",
7
+ text: "#f5f5f7",
8
+ textMuted: "#9ca3af",
9
+ textDim: "#52525b",
10
+ deposit: "#10b981",
11
+ withdraw: "#fbbf24",
12
+ activate: "#3b82f6",
13
+ deactivate: "#9ca3af"
14
+ };
15
+ const kindMeta = {
16
+ Deposited: { label: "DEPOSIT", color: palette.deposit, verb: "Deposited" },
17
+ Withdrawn: { label: "WITHDRAW", color: palette.withdraw, verb: "Withdrew" },
18
+ StrategyEngineActivated: { label: "START", color: palette.activate, verb: "Started engine with" },
19
+ StrategyEngineDeactivated: { label: "STOP", color: palette.deactivate, verb: "Stopped engine" }
20
+ };
21
+ function shortAddress(addr) {
22
+ if (!addr || addr.length < 10)
23
+ return "—";
24
+ return `${addr.slice(0, 6)}…${addr.slice(-4)}`;
25
+ }
26
+ function timeAgo(ts) {
27
+ const seconds = Math.max(0, (Date.now() - ts) / 1000);
28
+ if (seconds < 60)
29
+ return `${seconds.toFixed(0)}s ago`;
30
+ const minutes = seconds / 60;
31
+ if (minutes < 60)
32
+ return `${minutes.toFixed(0)}m ago`;
33
+ return `${(minutes / 60).toFixed(1)}h ago`;
34
+ }
35
+ export function ContractEventFeed({ className, title = "Contract Activity", ...hookOptions }) {
36
+ const { events } = useStrategyContractEvents(hookOptions);
37
+ return (_jsxs("section", { className: className, style: {
38
+ background: palette.bg,
39
+ border: `1px solid ${palette.border}`,
40
+ borderRadius: 14,
41
+ boxShadow: "0 20px 60px rgba(0, 0, 0, 0.55)",
42
+ color: palette.text,
43
+ display: "grid",
44
+ fontFamily: "system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",
45
+ gap: 12,
46
+ maxWidth: 420,
47
+ padding: 18
48
+ }, children: [_jsxs("header", { style: { alignItems: "center", display: "flex", justifyContent: "space-between" }, children: [_jsx("h3", { style: { fontSize: 14, fontWeight: 700, letterSpacing: "0.02em", margin: 0 }, children: title }), _jsx("span", { style: { color: palette.textDim, fontSize: 11 }, children: hookOptions.strategyContractAddress ? "Watching contract" : "No contract" })] }), !hookOptions.strategyContractAddress ? (_jsx(Empty, { text: "Deploy a strategy contract to start watching events." })) : events.length === 0 ? (_jsx(Empty, { text: "No events yet. Deposit, withdraw, or start the engine to see activity." })) : (_jsx("ul", { style: { display: "grid", gap: 6, listStyle: "none", margin: 0, padding: 0 }, children: events.map((event) => (_jsx(EventRow, { event: event }, event.id))) }))] }));
49
+ }
50
+ function EventRow({ event }) {
51
+ const meta = kindMeta[event.kind];
52
+ const amountLine = event.amountEth !== undefined
53
+ ? `${meta.verb} ${Number(event.amountEth).toFixed(6)} ETH`
54
+ : meta.verb;
55
+ return (_jsxs("li", { style: {
56
+ background: palette.surface,
57
+ border: `1px solid ${palette.border}`,
58
+ borderRadius: 8,
59
+ display: "grid",
60
+ gap: 6,
61
+ padding: "10px 12px"
62
+ }, children: [_jsxs("div", { style: { alignItems: "center", display: "flex", gap: 10, justifyContent: "space-between" }, children: [_jsx("span", { style: {
63
+ background: `${meta.color}22`,
64
+ border: `1px solid ${meta.color}66`,
65
+ borderRadius: 4,
66
+ color: meta.color,
67
+ fontSize: 10,
68
+ fontWeight: 700,
69
+ letterSpacing: "0.06em",
70
+ padding: "2px 6px"
71
+ }, children: meta.label }), _jsx("span", { style: { color: palette.textDim, fontSize: 11 }, children: timeAgo(event.timestamp) })] }), _jsx("div", { style: { color: palette.text, fontSize: 13 }, children: amountLine }), _jsxs("div", { style: { color: palette.textMuted, fontSize: 11 }, children: ["by ", shortAddress(event.user), event.transactionHash ? (_jsxs(_Fragment, { children: [" · ", _jsx("a", { href: `https://etherscan.io/tx/${event.transactionHash}`, rel: "noreferrer", style: { color: palette.activate, textDecoration: "none" }, target: "_blank", children: "tx \u2197" })] })) : null] })] }));
72
+ }
73
+ function Empty({ text }) {
74
+ return (_jsx("div", { style: { color: palette.textDim, fontSize: 12, padding: "16px 4px", textAlign: "center" }, children: text }));
75
+ }
76
+ //# sourceMappingURL=ContractEventFeed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContractEventFeed.js","sourceRoot":"","sources":["../src/ContractEventFeed.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type UseGasPriceOptions } from "./useGasPrice.js";
2
+ export type GasBadgeProps = UseGasPriceOptions & {
3
+ className?: string;
4
+ };
5
+ export declare function GasBadge({ className, ...hookOptions }: GasBadgeProps): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=GasBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GasBadge.d.ts","sourceRoot":"","sources":["../src/GasBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtF,MAAM,MAAM,aAAa,GAAG,kBAAkB,GAAG;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAsBF,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,WAAW,EAAE,EAAE,aAAa,2CA2BpE"}
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useGasPrice } from "./useGasPrice.js";
3
+ const palette = {
4
+ bg: "#111113",
5
+ border: "#1f1f23",
6
+ textMuted: "#9ca3af",
7
+ textDim: "#52525b",
8
+ low: "#10b981",
9
+ normal: "#3b82f6",
10
+ high: "#fbbf24",
11
+ spike: "#ef4444",
12
+ unknown: "#52525b"
13
+ };
14
+ const tierColor = {
15
+ low: palette.low,
16
+ normal: palette.normal,
17
+ high: palette.high,
18
+ spike: palette.spike,
19
+ unknown: palette.unknown
20
+ };
21
+ export function GasBadge({ className, ...hookOptions }) {
22
+ const { gweiText, tier } = useGasPrice(hookOptions);
23
+ const color = tierColor[tier];
24
+ return (_jsxs("div", { className: className, style: {
25
+ alignItems: "center",
26
+ background: palette.bg,
27
+ border: `1px solid ${palette.border}`,
28
+ borderRadius: 999,
29
+ color: palette.textMuted,
30
+ display: "inline-flex",
31
+ fontFamily: "system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",
32
+ fontSize: 12,
33
+ gap: 8,
34
+ padding: "4px 12px"
35
+ }, children: [_jsx("span", { "aria-hidden": true, style: { background: color, borderRadius: 999, height: 6, width: 6 } }), _jsx("span", { style: { color: palette.textDim, fontSize: 10, fontWeight: 600, letterSpacing: "0.06em" }, children: "GAS" }), _jsx("strong", { style: { color, fontSize: 12, fontVariantNumeric: "tabular-nums" }, children: gweiText })] }));
36
+ }
37
+ //# sourceMappingURL=GasBadge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GasBadge.js","sourceRoot":"","sources":["../src/GasBadge.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAyC,MAAM,kBAAkB,CAAC;AAMtF,MAAM,OAAO,GAAG;IACd,EAAE,EAAE,SAAS;IACb,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,SAAS;IAClB,GAAG,EAAE,SAAS;IACd,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,MAAM,SAAS,GAAwC;IACrD,GAAG,EAAE,OAAO,CAAC,GAAG;IAChB,MAAM,EAAE,OAAO,CAAC,MAAM;IACtB,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,OAAO,EAAE,OAAO,CAAC,OAAO;CACzB,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,WAAW,EAAiB;IACnE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE9B,OAAO,CACL,eACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE;YACL,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,OAAO,CAAC,EAAE;YACtB,MAAM,EAAE,aAAa,OAAO,CAAC,MAAM,EAAE;YACrC,YAAY,EAAE,GAAG;YACjB,KAAK,EAAE,OAAO,CAAC,SAAS;YACxB,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,0DAA0D;YACtE,QAAQ,EAAE,EAAE;YACZ,GAAG,EAAE,CAAC;YACN,OAAO,EAAE,UAAU;SACpB,aAED,oCAAkB,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAI,EAC1F,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,oBAExF,EACP,iBAAQ,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,kBAAkB,EAAE,cAAc,EAAE,YAAG,QAAQ,GAAU,IAC3F,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type UseBinanceOrderBookOptions } from "./useBinanceOrderBook.js";
2
+ export type OrderBookWidgetProps = UseBinanceOrderBookOptions & {
3
+ className?: string;
4
+ title?: string;
5
+ rows?: number;
6
+ };
7
+ export declare function OrderBookWidget({ className, title, rows, ...hookOptions }: OrderBookWidgetProps): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=OrderBookWidget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrderBookWidget.d.ts","sourceRoot":"","sources":["../src/OrderBookWidget.tsx"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEhG,MAAM,MAAM,oBAAoB,GAAG,0BAA0B,GAAG;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAyBF,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,KAAoB,EACpB,IAAS,EACT,GAAG,WAAW,EACf,EAAE,oBAAoB,2CAmDtB"}