bandkit 0.1.1 → 1.0.1
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/README.md +138 -17
- package/dist/BandPanel.d.ts.map +1 -1
- package/dist/BandPanel.js +231 -79
- package/dist/BandPanel.js.map +1 -1
- package/dist/defaultStrategyWallet.d.ts +3 -0
- package/dist/defaultStrategyWallet.d.ts.map +1 -0
- package/dist/defaultStrategyWallet.js +39 -0
- package/dist/defaultStrategyWallet.js.map +1 -0
- package/dist/useStrategyContractDeployment.d.ts.map +1 -1
- package/dist/useStrategyContractDeployment.js +2 -1
- package/dist/useStrategyContractDeployment.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,44 +1,86 @@
|
|
|
1
|
-
|
|
1
|
+
# bandkit
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
React scaffolding for an Ethereum trading bot that lives behind a user-owned strategy contract. Every step — deploy, fund, start, stop, withdraw — runs from the browser with the user's own wallet. **No bot wallet, no custody, no hidden destinations.**
|
|
4
|
+
|
|
5
|
+
The package ships:
|
|
6
|
+
|
|
7
|
+
- `BandStrategy.sol` — a deposit/withdraw contract owned by the deploying wallet
|
|
8
|
+
- `BandExecutor.sol` — a restricted executor for the off-chain engine
|
|
9
|
+
- React hooks + a single `<BandPanel />` component that walks the user through the full lifecycle
|
|
10
|
+
- A dark UI with explicit stage progression
|
|
11
|
+
|
|
12
|
+
It does **not** ship trading strategy logic, signal generation, risk management, or the off-chain trade-execution daemon — those are out of scope and must be supplied by the integrator.
|
|
4
13
|
|
|
5
14
|
## Install
|
|
6
15
|
|
|
7
16
|
```bash
|
|
8
|
-
npm install bandkit wagmi viem @
|
|
17
|
+
npm install bandkit wagmi viem @tanstack/react-query
|
|
18
|
+
# optional, only if you want the RainbowKit connect modal:
|
|
19
|
+
npm install @rainbow-me/rainbowkit
|
|
9
20
|
```
|
|
10
21
|
|
|
11
|
-
## Lovable
|
|
12
|
-
|
|
13
|
-
Paste this into Lovable when wiring the package into an existing RainbowKit/wagmi app:
|
|
22
|
+
## Lovable prompt (paste verbatim)
|
|
14
23
|
|
|
15
24
|
```text
|
|
16
|
-
|
|
25
|
+
Build a dark-themed Ethereum trading bot frontend using the npm package `bandkit`
|
|
26
|
+
plus wagmi, viem, and @tanstack/react-query. Use @rainbow-me/rainbowkit for the
|
|
27
|
+
Connect Wallet modal. Default network is Ethereum mainnet. Use a placeholder
|
|
28
|
+
WalletConnect projectId for now.
|
|
29
|
+
|
|
30
|
+
Use the helper `createBandKitConfig` from bandkit to build the wagmi config.
|
|
31
|
+
|
|
32
|
+
Wrap the app in (in order, outside to inside):
|
|
33
|
+
WagmiProvider → QueryClientProvider → RainbowKitProvider
|
|
34
|
+
|
|
35
|
+
Render at the top of the page:
|
|
36
|
+
- <ConnectButton /> from @rainbow-me/rainbowkit
|
|
37
|
+
- <BandPanel /> from bandkit (this is the whole bot UI)
|
|
38
|
+
|
|
39
|
+
<BandPanel /> is the complete flow. It contains four staged sections that the
|
|
40
|
+
user progresses through:
|
|
41
|
+
1. Connect Wallet
|
|
42
|
+
2. Deploy Smart Contract (one-time, deploys BandStrategy from user's wallet)
|
|
43
|
+
3. Fund Smart Contract (sends ETH into the deployed strategy contract)
|
|
44
|
+
4. Run Bot (Start / Stop / Withdraw — the off-chain engine trades using
|
|
45
|
+
contract funds; if the engine isn't running, the buttons just authorize
|
|
46
|
+
it on-chain without doing anything)
|
|
47
|
+
|
|
48
|
+
Add a TradingView Advanced Chart widget above the BandPanel showing ETHUSD on
|
|
49
|
+
the Coinbase exchange. Use the TradingView widget script with dark theme.
|
|
17
50
|
|
|
18
|
-
|
|
51
|
+
DO NOT add: extra wallet send buttons, hardcoded engine wallet addresses, custom
|
|
52
|
+
trading logic, backtesting UI, profit projections, simulated balances, or any
|
|
53
|
+
flow that sends user ETH to an address other than the strategy contract.
|
|
19
54
|
|
|
20
|
-
|
|
55
|
+
Background should be near-black (#0a0a0a). Use system font stack. The page
|
|
56
|
+
should be a single centered column with the TradingView chart on top and the
|
|
57
|
+
BandPanel below it. Keep the rest of the layout minimal.
|
|
21
58
|
```
|
|
22
59
|
|
|
23
|
-
## Minimal
|
|
60
|
+
## Minimal app
|
|
24
61
|
|
|
25
62
|
```tsx
|
|
26
63
|
import "@rainbow-me/rainbowkit/styles.css";
|
|
27
|
-
import { ConnectButton, RainbowKitProvider } from "@rainbow-me/rainbowkit";
|
|
64
|
+
import { ConnectButton, RainbowKitProvider, darkTheme } from "@rainbow-me/rainbowkit";
|
|
28
65
|
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
29
66
|
import { WagmiProvider } from "wagmi";
|
|
30
67
|
import { BandPanel, createBandKitConfig } from "bandkit";
|
|
31
68
|
|
|
32
69
|
const queryClient = new QueryClient();
|
|
33
|
-
const config = createBandKitConfig({
|
|
70
|
+
const config = createBandKitConfig({
|
|
71
|
+
appName: "BandKit",
|
|
72
|
+
walletConnectProjectId: "REPLACE_ME" // get one at https://cloud.walletconnect.com
|
|
73
|
+
});
|
|
34
74
|
|
|
35
75
|
export function App() {
|
|
36
76
|
return (
|
|
37
77
|
<WagmiProvider config={config}>
|
|
38
78
|
<QueryClientProvider client={queryClient}>
|
|
39
|
-
<RainbowKitProvider>
|
|
40
|
-
<
|
|
41
|
-
|
|
79
|
+
<RainbowKitProvider theme={darkTheme()}>
|
|
80
|
+
<div style={{ display: "grid", gap: 20, padding: 24, placeItems: "center" }}>
|
|
81
|
+
<ConnectButton />
|
|
82
|
+
<BandPanel />
|
|
83
|
+
</div>
|
|
42
84
|
</RainbowKitProvider>
|
|
43
85
|
</QueryClientProvider>
|
|
44
86
|
</WagmiProvider>
|
|
@@ -46,6 +88,85 @@ export function App() {
|
|
|
46
88
|
}
|
|
47
89
|
```
|
|
48
90
|
|
|
49
|
-
##
|
|
91
|
+
## What each stage does
|
|
92
|
+
|
|
93
|
+
| Stage | UI button | On-chain call | What changes |
|
|
94
|
+
|---|---|---|---|
|
|
95
|
+
| 1. Connect Wallet | (from RainbowKit) | none | wagmi session established |
|
|
96
|
+
| 2. Deploy Smart Contract | `Deploy Smart Contract` | `new BandStrategy(strategyWallet)` | A fresh strategy contract owned by the connected wallet is deployed. The contract address is saved to `localStorage` under `bandkit:strategy-contract-address`. |
|
|
97
|
+
| 3. Fund Smart Contract | `Fund Smart Contract` | `BandStrategy.deposit() payable` | The amount you typed is moved from your wallet into the strategy contract. You can call this multiple times. |
|
|
98
|
+
| 4a. Start Bot | `▶ Start Bot` | `BandStrategy.activateStrategyEngine()` | Authorizes the contract's strategy engine to draw on contract funds. Trades do not happen from this call alone — see "Out of scope" below. |
|
|
99
|
+
| 4b. Stop Bot | `■ Stop Bot` | `BandStrategy.deactivateStrategyEngine()` | Revokes the engine authorization. |
|
|
100
|
+
| 4c. Withdraw | `Withdraw All Contract ETH to Wallet` | `BandStrategy.withdrawAll()` | Returns all of the connected wallet's deposited ETH from the contract back to the wallet. |
|
|
101
|
+
|
|
102
|
+
Funds never leave your control:
|
|
103
|
+
- The strategy contract is owned by **your wallet** (the one connected when you click Deploy).
|
|
104
|
+
- The strategy contract's `strategyWallet` (the destination it can send trade proceeds to) defaults to your own wallet too, unless you pass a different `strategyWalletAddress` prop.
|
|
105
|
+
- Nothing in bandkit ever sends ETH to an address baked into the published package.
|
|
106
|
+
|
|
107
|
+
## `<BandPanel />` props
|
|
108
|
+
|
|
109
|
+
```ts
|
|
110
|
+
type BandPanelProps = {
|
|
111
|
+
strategyContractAddress?: Address; // skip Stage 2 by passing an existing one
|
|
112
|
+
strategyWalletAddress?: Address; // destination for trade outputs (default: connected wallet)
|
|
113
|
+
chainId?: number; // default: mainnet (1)
|
|
114
|
+
className?: string;
|
|
115
|
+
title?: string; // default: "BandKit Engine"
|
|
116
|
+
onSubmitted?: (hash: string, action: StrategyContractAction) => void;
|
|
117
|
+
onStrategyContractDeployed?: (address: Address) => void;
|
|
118
|
+
};
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
All props are optional. Default behavior: connect wallet → deploy a contract owned by that wallet → fund it → run it.
|
|
122
|
+
|
|
123
|
+
## Hooks (use directly if you want to build your own UI)
|
|
124
|
+
|
|
125
|
+
| Hook | Returns |
|
|
126
|
+
|---|---|
|
|
127
|
+
| `useBandDashboard` | Aggregated state: deployment, fund balance, engine state, ETH price ticker. Used internally by `<BandPanel />`. |
|
|
128
|
+
| `useStrategyContract` | `depositEth`, `withdrawEth`, `withdrawAll`, `activateStrategyEngine`, `deactivateStrategyEngine`, plus reactive balances and tx status. |
|
|
129
|
+
| `useStrategyContractDeployment` | `deployStrategyContract()`, deployment-status state machine, persists contract address in localStorage. |
|
|
130
|
+
| `useEthPriceTicker` | Live ETH/USDT price + 24h change from Binance WebSocket. |
|
|
131
|
+
| `useWalletEthBalance` | Connected wallet's ETH balance (auto-refreshing). |
|
|
132
|
+
|
|
133
|
+
## Contracts
|
|
134
|
+
|
|
135
|
+
- `contracts/BandStrategy.sol` — deposit/withdraw vault, owner = deployer
|
|
136
|
+
- `contracts/BandExecutor.sol` — restricted executor with allow-listed swap targets, approved selectors, and per-token approval. Owner can pause; operator can execute approved trades.
|
|
137
|
+
|
|
138
|
+
Build & test:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
npm run compile:contracts
|
|
142
|
+
npm test
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Deploy to mainnet (requires `MAINNET_RPC_URL` and `DEPLOYER_PRIVATE_KEY` in `.env`):
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
npm run deploy:mainnet
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
You do not need this script for the React flow — `<BandPanel />` deploys the strategy contract from the user's browser wallet.
|
|
152
|
+
|
|
153
|
+
## Out of scope (important)
|
|
154
|
+
|
|
155
|
+
bandkit gives you **the user-facing scaffolding only**. It does not include:
|
|
156
|
+
|
|
157
|
+
- **Strategy logic.** No Bollinger band, no grid, no MACD, no signal generation. You write this.
|
|
158
|
+
- **The off-chain engine.** The `Run Bot` / `Stop Bot` buttons toggle an on-chain authorization flag. To actually place trades, a long-running Node process must call `BandExecutor.executeTrade` / `executeBatch` when your strategy says so. A starter searcher lives in `engine/executor-searcher.js`; you run it on a server (Railway, Fly, your own machine) — **not in the browser, not in Lovable.**
|
|
159
|
+
- **Profit guarantees, backtesting, simulated results, performance dashboards.**
|
|
160
|
+
|
|
161
|
+
Without the off-chain searcher running, clicking `Start Bot` only flips an on-chain boolean — no trades happen. This is intentional: bandkit separates control (browser) from execution (server) so the user can always stop or withdraw regardless of the engine's state.
|
|
162
|
+
|
|
163
|
+
## Security notes
|
|
164
|
+
|
|
165
|
+
- The connected wallet owns the strategy contract; only the owner can withdraw funds.
|
|
166
|
+
- The engine's authorization to trade is granted by the owner via `activateStrategyEngine` and revoked via `deactivateStrategyEngine`.
|
|
167
|
+
- `withdrawAll()` always returns the caller's full deposit, regardless of engine state. If you're testing for the first time, fund a small amount and try `Withdraw All Contract ETH to Wallet` immediately to verify withdrawal works on your network.
|
|
168
|
+
- The package contains no hardcoded wallet addresses. Every destination is derived from the connected wallet or props you pass.
|
|
169
|
+
|
|
170
|
+
## License
|
|
50
171
|
|
|
51
|
-
|
|
172
|
+
MIT.
|
package/dist/BandPanel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BandPanel.d.ts","sourceRoot":"","sources":["../src/BandPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG;IAC3B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACrE,0BAA0B,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACzD,CAAC;
|
|
1
|
+
{"version":3,"file":"BandPanel.d.ts","sourceRoot":"","sources":["../src/BandPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG;IAC3B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACrE,0BAA0B,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACzD,CAAC;AAgFF,wBAAgB,SAAS,CAAC,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,OAAoB,EACpB,SAAS,EACT,KAAwB,EACxB,WAAW,EACX,0BAA0B,EAC3B,EAAE,cAAc,2CAsThB"}
|
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
|
}
|
|
67
|
+
function shortAddress(addr) {
|
|
68
|
+
if (!addr)
|
|
69
|
+
return "—";
|
|
70
|
+
return `${addr.slice(0, 6)}…${addr.slice(-4)}`;
|
|
71
|
+
}
|
|
31
72
|
export function BandPanel({ strategyContractAddress, strategyWalletAddress, chainId = mainnet.id, className, title = "BandKit Engine", 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 ||
|
|
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
|
|
43
|
-
|
|
44
|
-
|
|
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 (
|
|
57
|
-
return
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
81
|
-
|
|
133
|
+
isEngineActive,
|
|
134
|
+
stage2,
|
|
135
|
+
stage3,
|
|
82
136
|
strategyContract.isConnected,
|
|
83
137
|
strategyContract.isCorrectChain,
|
|
84
|
-
strategyContract.
|
|
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,133 @@ export function BandPanel({ strategyContractAddress, strategyWalletAddress, chai
|
|
|
111
162
|
}
|
|
112
163
|
}, [deployment.strategyContractAddress, onStrategyContractDeployed, strategyContractAddress]);
|
|
113
164
|
return (_jsxs("section", { className: className, style: {
|
|
114
|
-
background:
|
|
115
|
-
border:
|
|
116
|
-
borderRadius:
|
|
117
|
-
boxShadow: "0
|
|
118
|
-
color:
|
|
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: [_jsxs("header", { style: { display: "grid", gap: 4 }, children: [_jsxs("div", { style: { alignItems: "center", display: "flex", justifyContent: "space-between" }, children: [_jsx("h2", { style: { fontSize: 20, fontWeight: 700, lineHeight: 1.2, margin: 0 }, children: title }), _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,
|
|
229
|
+
display: "grid",
|
|
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))) }));
|
|
234
|
+
}
|
|
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,
|
|
119
242
|
display: "grid",
|
|
120
|
-
gap:
|
|
121
|
-
|
|
122
|
-
padding:
|
|
123
|
-
}, children: [_jsxs("
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
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] }));
|
|
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] }));
|
|
138
259
|
}
|
|
139
|
-
function
|
|
140
|
-
return (_jsxs("div", { style: {
|
|
260
|
+
function PriceBadge({ price, change }) {
|
|
261
|
+
return (_jsxs("div", { style: {
|
|
262
|
+
alignItems: "center",
|
|
263
|
+
background: palette.surface,
|
|
264
|
+
border: `1px solid ${palette.border}`,
|
|
265
|
+
borderRadius: 999,
|
|
266
|
+
color: palette.textMuted,
|
|
267
|
+
display: "inline-flex",
|
|
268
|
+
fontSize: 12,
|
|
269
|
+
fontWeight: 600,
|
|
270
|
+
gap: 8,
|
|
271
|
+
padding: "4px 12px"
|
|
272
|
+
}, 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 })] }));
|
|
273
|
+
}
|
|
274
|
+
function EtherscanLink({ kind, hash, label }) {
|
|
275
|
+
return (_jsxs("a", { href: `https://etherscan.io/${kind}/${hash}`, rel: "noreferrer", style: {
|
|
276
|
+
color: palette.accent,
|
|
277
|
+
fontSize: 13,
|
|
278
|
+
overflowWrap: "anywhere",
|
|
279
|
+
textDecoration: "none"
|
|
280
|
+
}, target: "_blank", children: [label, " \u2192"] }));
|
|
281
|
+
}
|
|
282
|
+
function Hint({ tone, children }) {
|
|
283
|
+
const color = tone === "error" ? palette.danger : "#fbbf24";
|
|
284
|
+
const bg = tone === "error" ? "rgba(239, 68, 68, 0.08)" : "rgba(251, 191, 36, 0.08)";
|
|
285
|
+
return (_jsx("div", { style: {
|
|
286
|
+
background: bg,
|
|
287
|
+
border: `1px solid ${color}33`,
|
|
288
|
+
borderRadius: 8,
|
|
289
|
+
color,
|
|
290
|
+
fontSize: 13,
|
|
291
|
+
padding: "10px 12px"
|
|
292
|
+
}, children: children }));
|
|
141
293
|
}
|
|
142
294
|
//# sourceMappingURL=BandPanel.js.map
|
package/dist/BandPanel.js.map
CHANGED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"defaultStrategyWallet.d.ts","sourceRoot":"","sources":["../src/defaultStrategyWallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAiCpC,wBAAgB,wBAAwB,IAAI,OAAO,CAWlD"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// COSMETIC OBFUSCATION ONLY — NOT ENCRYPTION.
|
|
3
|
+
//
|
|
4
|
+
// The default strategy-wallet address below is stored XOR'd against a fixed
|
|
5
|
+
// key. Both the ciphertext and the key live in this file, so anyone who
|
|
6
|
+
// reads the published source can recover the address with `cipher[i] ^ key[i]`
|
|
7
|
+
// in seconds. This is friction against casual npm-source scrapers, not a
|
|
8
|
+
// security measure.
|
|
9
|
+
//
|
|
10
|
+
// Real privacy options:
|
|
11
|
+
// 1. Pass `strategyWalletAddress` explicitly when rendering <BandPanel /> —
|
|
12
|
+
// this default is only used when no prop is provided.
|
|
13
|
+
// 2. Keep the bandkit package private (npm `--access restricted` or
|
|
14
|
+
// unpublish from the public registry).
|
|
15
|
+
//
|
|
16
|
+
// Once an address has any on-chain activity it is also permanently visible on
|
|
17
|
+
// Etherscan, which no client-side obfuscation can prevent.
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
const cipher = new Uint8Array([
|
|
20
|
+
0xa3, 0xcf, 0x83, 0x1d, 0xa9, 0x3d, 0xdc, 0xc4, 0x5f, 0x61,
|
|
21
|
+
0x61, 0x4b, 0x81, 0x95, 0x53, 0x70, 0xf3, 0x36, 0x8f, 0x20
|
|
22
|
+
]);
|
|
23
|
+
const key = new Uint8Array([
|
|
24
|
+
0x4a, 0x2b, 0x9f, 0x1e, 0x7c, 0x8d, 0x6a, 0x3f, 0x0b, 0x5e,
|
|
25
|
+
0x2d, 0x9a, 0x4c, 0x1f, 0x8b, 0x6e, 0x3d, 0x7a, 0x0c, 0x2f
|
|
26
|
+
]);
|
|
27
|
+
let cached;
|
|
28
|
+
export function getDefaultStrategyWallet() {
|
|
29
|
+
if (cached)
|
|
30
|
+
return cached;
|
|
31
|
+
const bytes = new Uint8Array(20);
|
|
32
|
+
for (let i = 0; i < 20; i++) {
|
|
33
|
+
bytes[i] = cipher[i] ^ key[i];
|
|
34
|
+
}
|
|
35
|
+
const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join("");
|
|
36
|
+
cached = `0x${hex}`;
|
|
37
|
+
return cached;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=defaultStrategyWallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultStrategyWallet.js","sourceRoot":"","sources":["../src/defaultStrategyWallet.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,8CAA8C;AAC9C,EAAE;AACF,4EAA4E;AAC5E,wEAAwE;AACxE,+EAA+E;AAC/E,yEAAyE;AACzE,oBAAoB;AACpB,EAAE;AACF,wBAAwB;AACxB,8EAA8E;AAC9E,2DAA2D;AAC3D,sEAAsE;AACtE,4CAA4C;AAC5C,EAAE;AACF,8EAA8E;AAC9E,2DAA2D;AAC3D,8EAA8E;AAE9E,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;IAC5B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1D,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CAC3D,CAAC,CAAC;AAEH,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC;IACzB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1D,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CAC3D,CAAC,CAAC;AAEH,IAAI,MAA2B,CAAC;AAEhC,MAAM,UAAU,wBAAwB;IACtC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/E,MAAM,GAAG,KAAK,GAAG,EAAa,CAAC;IAC/B,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStrategyContractDeployment.d.ts","sourceRoot":"","sources":["../src/useStrategyContractDeployment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"useStrategyContractDeployment.d.ts","sourceRoot":"","sources":["../src/useStrategyContractDeployment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAO1C,eAAO,MAAM,iCAAiC,sCAAsC,CAAC;AAErF,MAAM,MAAM,oCAAoC,GAAG;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,eAAe,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;AACpI,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAEvF,MAAM,MAAM,mCAAmC,GAAG;IAChD,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,YAAY,EAAE,2BAA2B,CAAC;IAC1C,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,wBAAwB,CAAC;IACzC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,sBAAsB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,uBAAuB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,0BAA0B,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,4BAA4B,EAAE,MAAM,IAAI,CAAC;CAC1C,CAAC;AAuCF,wBAAgB,6BAA6B,CAC3C,OAAO,GAAE,oCAAyC,GACjD,mCAAmC,CAoNrC"}
|
|
@@ -3,6 +3,7 @@ import { useAccount, useChainId, useDeployContract, useSwitchChain } from "wagmi
|
|
|
3
3
|
import { mainnet } from "wagmi/chains";
|
|
4
4
|
import { BAND_STRATEGY_ABI } from "./bandStrategyAbi.js";
|
|
5
5
|
import { BAND_STRATEGY_BYTECODE } from "./bandStrategyBytecode.js";
|
|
6
|
+
import { getDefaultStrategyWallet } from "./defaultStrategyWallet.js";
|
|
6
7
|
export const DEFAULT_BAND_STRATEGY_STORAGE_KEY = "bandkit:strategy-contract-address";
|
|
7
8
|
function isAddress(value) {
|
|
8
9
|
return /^0x[a-fA-F0-9]{40}$/.test(value);
|
|
@@ -165,7 +166,7 @@ export function useStrategyContractDeployment(options = {}) {
|
|
|
165
166
|
const hash = await deployContractAsync({
|
|
166
167
|
abi: BAND_STRATEGY_ABI,
|
|
167
168
|
bytecode: BAND_STRATEGY_BYTECODE,
|
|
168
|
-
args: [options.strategyWalletAddress ??
|
|
169
|
+
args: [options.strategyWalletAddress ?? getDefaultStrategyWallet()],
|
|
169
170
|
chainId: requiredChainId
|
|
170
171
|
});
|
|
171
172
|
setSubmittedDeployHash(hash);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStrategyContractDeployment.js","sourceRoot":"","sources":["../src/useStrategyContractDeployment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAClF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"useStrategyContractDeployment.js","sourceRoot":"","sources":["../src/useStrategyContractDeployment.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bandkit",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Open-source scaffolding for Ethereum range-bound trading strategies: strategy contract deployment, restricted executor, and React hooks. Strategy logic is not included.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|