tollkit-wallet 0.2.2 → 0.3.0
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/actions.d.ts +136 -40
- package/dist/ai.d.ts +13 -1
- package/dist/ai.js +2 -2
- package/dist/ai.js.map +1 -1
- package/dist/autopilot.d.ts +7 -0
- package/dist/autopilot.js +118 -3
- package/dist/autopilot.js.map +1 -1
- package/dist/bots.d.ts +92 -0
- package/dist/bots.js +183 -0
- package/dist/bots.js.map +1 -0
- package/dist/bridge.js +3 -2
- package/dist/bridge.js.map +1 -1
- package/dist/dapp.d.ts +10 -0
- package/dist/dapp.js +80 -13
- package/dist/dapp.js.map +1 -1
- package/dist/dashboard.d.ts +12 -0
- package/dist/dashboard.js +127 -14
- package/dist/dashboard.js.map +1 -1
- package/dist/data/token-list.d.ts +12 -0
- package/dist/data/token-list.js +13 -0
- package/dist/data/token-list.js.map +1 -0
- package/dist/holdings.d.ts +6 -0
- package/dist/holdings.js +41 -8
- package/dist/holdings.js.map +1 -1
- package/dist/mcp.d.ts +1 -1
- package/dist/mcp.js +1 -1
- package/dist/pay.js +1 -1
- package/dist/pay.js.map +1 -1
- package/dist/policy.d.ts +2 -2
- package/dist/rules.d.ts +59 -8
- package/dist/rules.js +45 -3
- package/dist/rules.js.map +1 -1
- package/dist/seller.js +15 -4
- package/dist/seller.js.map +1 -1
- package/dist/send.js +3 -2
- package/dist/send.js.map +1 -1
- package/dist/solconfirm.d.ts +13 -0
- package/dist/solconfirm.js +21 -0
- package/dist/solconfirm.js.map +1 -0
- package/dist/stake.js +3 -2
- package/dist/stake.js.map +1 -1
- package/dist/swap.d.ts +27 -4
- package/dist/swap.js +202 -9
- package/dist/swap.js.map +1 -1
- package/dist/tokenlist.d.ts +70 -0
- package/dist/tokenlist.js +259 -0
- package/dist/tokenlist.js.map +1 -0
- package/dist/ui.js +98 -10
- package/dist/ui.js.map +1 -1
- package/dist/wallet.d.ts +3 -1
- package/dist/wallet.js +22 -1
- package/dist/wallet.js.map +1 -1
- package/extension/background.js +1 -1
- package/extension/popup.js +1 -1
- package/package.json +2 -2
package/dist/autopilot.js
CHANGED
|
@@ -14,7 +14,7 @@ import path from "node:path";
|
|
|
14
14
|
import { Connection, PublicKey } from "@solana/web3.js";
|
|
15
15
|
import { DEFAULT_RPC, NATIVE_EVM, WSOL } from "./chains.js";
|
|
16
16
|
import { walletHome } from "./paths.js";
|
|
17
|
-
import { BUY_KINDS, nextRun } from "./rules.js";
|
|
17
|
+
import { BUY_KINDS, gridLevels, nextRun } from "./rules.js";
|
|
18
18
|
import { KNOWN, resolveToken, toAtomic } from "./tokens.js";
|
|
19
19
|
/** Gas kept back when selling a chain's native coin, so the wallet can still pay fees. */
|
|
20
20
|
const GAS_RESERVE = { base: 50000000000000n /* 0.00005 ETH */, ethereum: 2000000000000000n /* 0.002 ETH */, solana: 10000000n /* 0.01 SOL */ };
|
|
@@ -132,12 +132,27 @@ export class Autopilot {
|
|
|
132
132
|
if (r.kind === "dca" || r.state.failures > 0)
|
|
133
133
|
return;
|
|
134
134
|
}
|
|
135
|
+
if (r.after) {
|
|
136
|
+
// Part of a bot: waits for an earlier step (e.g. take profit only after the dip buy filled).
|
|
137
|
+
const prev = this.store.get(r.after);
|
|
138
|
+
if (!prev || ["cancelled", "expired", "error"].includes(prev.status)) {
|
|
139
|
+
await this.finishAs(r.id, "cancelled", "Cancelled because the step before it didn't happen.");
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (prev.status !== "done")
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
135
145
|
const t = await this.token(r.chain, r.token);
|
|
136
146
|
const p = await this.price(r.chain, t);
|
|
137
147
|
if (p === undefined) {
|
|
138
148
|
await this.record(r.id, { checked: true });
|
|
139
149
|
return;
|
|
140
150
|
}
|
|
151
|
+
if (r.kind === "grid") {
|
|
152
|
+
await this.record(r.id, { price: p, checked: true });
|
|
153
|
+
await this.grid(r, t, p);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
141
156
|
let high = r.state.high;
|
|
142
157
|
if (r.kind === "trailing_stop")
|
|
143
158
|
high = Math.max(high ?? p, p);
|
|
@@ -168,7 +183,8 @@ export class Autopilot {
|
|
|
168
183
|
let bal = await this.exec.balance(r.chain, t);
|
|
169
184
|
if (t.address === NATIVE_EVM || t.address === WSOL)
|
|
170
185
|
bal = bal > GAS_RESERVE[r.chain] ? bal - GAS_RESERVE[r.chain] : 0n;
|
|
171
|
-
|
|
186
|
+
const from = r.sell_from ? this.store.get(r.sell_from) : undefined;
|
|
187
|
+
let amt = from ? BigInt(from.state.bought_atomic ?? "0") : r.sell_percent !== undefined ? (bal * BigInt(Math.round(r.sell_percent * 100))) / 10000n : BigInt(toAtomic(r.sell_amount, t.decimals));
|
|
172
188
|
if (amt > bal)
|
|
173
189
|
amt = bal;
|
|
174
190
|
if (amt <= 0n) {
|
|
@@ -196,9 +212,15 @@ export class Autopilot {
|
|
|
196
212
|
}
|
|
197
213
|
const usd = res.quote?.usd_value ?? undefined;
|
|
198
214
|
const now = new Date(this.now());
|
|
215
|
+
const buy = BUY_KINDS.includes(r.kind);
|
|
216
|
+
const units = buy ? Number(res.quote?.buy_amount ?? 0) / 10 ** t.decimals : Number(req.sell_amount) / 10 ** t.decimals;
|
|
199
217
|
const updated = await this.store.mutate((rs) => {
|
|
200
218
|
const x = rs.find((y) => y.id === r.id);
|
|
201
|
-
x.state.fills.push({ ts: now.toISOString(), ok: true, usd, tx: res.tx, paper: this.exec.mode === "paper" });
|
|
219
|
+
x.state.fills.push({ ts: now.toISOString(), ok: true, usd, tx: res.tx, paper: this.exec.mode === "paper", side: buy ? "buy" : "sell", units });
|
|
220
|
+
x.state.fills = x.state.fills.slice(-50);
|
|
221
|
+
tally(x, buy ? "buy" : "sell", usd, units);
|
|
222
|
+
if (buy)
|
|
223
|
+
x.state.bought_atomic = (BigInt(x.state.bought_atomic ?? "0") + BigInt(String(res.quote?.buy_amount ?? "0"))).toString();
|
|
202
224
|
x.state.runs += 1;
|
|
203
225
|
x.state.failures = 0;
|
|
204
226
|
x.state.last_error = undefined;
|
|
@@ -219,6 +241,82 @@ export class Autopilot {
|
|
|
219
241
|
});
|
|
220
242
|
this.o.onEvent?.({ type: "filled", rule: updated, detail: `${this.exec.mode === "paper" ? "Paper fill" : "Filled"} at about $${price}${usd ? ` for $${usd.toFixed(2)}` : ""}${res.tx ? ` (${res.tx})` : ""}` });
|
|
221
243
|
}
|
|
244
|
+
/**
|
|
245
|
+
* Grid: levels L0 < L1 < ... from lower_price to upper_price. Slot i buys amount_usd at L(i) and sells those
|
|
246
|
+
* units at L(i+1), then can buy again. One trade per check: sells first (a filled slot whose sell level is
|
|
247
|
+
* reached), then the level the price has just come down to. Below the range it doesn't buy.
|
|
248
|
+
*/
|
|
249
|
+
async grid(r, t, p) {
|
|
250
|
+
const L = gridLevels(r), g = r.state.grid ?? { units: Array(L.length - 1).fill(null), cost: Array(L.length - 1).fill(null), atomic: Array(L.length - 1).fill(null) };
|
|
251
|
+
if (r.state.next_run && Date.parse(r.state.next_run) > this.now())
|
|
252
|
+
return; // backing off after a failure
|
|
253
|
+
const usdc = KNOWN[r.chain].USDC;
|
|
254
|
+
const sellAt = g.atomic.findIndex((a, i) => a !== null && p >= L[i + 1]);
|
|
255
|
+
if (sellAt >= 0) {
|
|
256
|
+
const req = { chain: r.chain, sell_token: t.address, buy_token: usdc.address, sell_amount: g.atomic[sellAt], slippage_bps: this.exec.slippageBps };
|
|
257
|
+
const res = await this.exec.swap(req);
|
|
258
|
+
if (!res.ok) {
|
|
259
|
+
await this.fail(r, res.refused?.code ?? "swap_failed", res.refused?.reason ?? "Swap failed.");
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
const usd = res.quote?.usd_value ?? undefined, units = Number(req.sell_amount) / 10 ** t.decimals;
|
|
263
|
+
const updated = await this.store.mutate((rs) => {
|
|
264
|
+
const x = rs.find((y) => y.id === r.id), gg = x.state.grid;
|
|
265
|
+
const profit = usd !== undefined && gg.cost[sellAt] != null ? usd - gg.cost[sellAt] : 0;
|
|
266
|
+
gg.units[sellAt] = null;
|
|
267
|
+
gg.cost[sellAt] = null;
|
|
268
|
+
gg.atomic[sellAt] = null;
|
|
269
|
+
x.state.fills.push({ ts: new Date(this.now()).toISOString(), ok: true, usd, tx: res.tx, paper: this.exec.mode === "paper", side: "sell", units });
|
|
270
|
+
x.state.fills = x.state.fills.slice(-50);
|
|
271
|
+
tally(x, "sell", usd, units);
|
|
272
|
+
x.state.round_trips = (x.state.round_trips ?? 0) + 1;
|
|
273
|
+
x.state.grid_profit_usd = (x.state.grid_profit_usd ?? 0) + profit;
|
|
274
|
+
x.state.runs += 1;
|
|
275
|
+
x.state.failures = 0;
|
|
276
|
+
x.state.last_error = undefined;
|
|
277
|
+
x.state.next_run = undefined;
|
|
278
|
+
return { ...x };
|
|
279
|
+
});
|
|
280
|
+
this.o.onEvent?.({ type: "filled", rule: updated, detail: `Grid sold level ${sellAt + 1} at about $${p}${usd ? ` for $${usd.toFixed(2)}` : ""}` });
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
if (p < L[0])
|
|
284
|
+
return;
|
|
285
|
+
// Buy the level the price has just reached: at or below it, but less than one step below (lower levels wait
|
|
286
|
+
// for the price to get there; levels above today's price were never reached on the way down).
|
|
287
|
+
const step = L[1] - L[0];
|
|
288
|
+
let buyAt = -1;
|
|
289
|
+
for (let i = L.length - 2; i >= 0; i--)
|
|
290
|
+
if (g.atomic[i] === null && p <= L[i] && L[i] - p < step) {
|
|
291
|
+
buyAt = i;
|
|
292
|
+
break;
|
|
293
|
+
}
|
|
294
|
+
if (buyAt < 0)
|
|
295
|
+
return;
|
|
296
|
+
const req = { chain: r.chain, sell_token: usdc.address, buy_token: t.address, sell_amount: toAtomic(r.amount_usd.toFixed(6), 6), slippage_bps: this.exec.slippageBps };
|
|
297
|
+
const res = await this.exec.swap(req);
|
|
298
|
+
if (!res.ok) {
|
|
299
|
+
await this.fail(r, res.refused?.code ?? "swap_failed", res.refused?.reason ?? "Swap failed.");
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
const usd = res.quote?.usd_value ?? undefined, atomic = String(res.quote?.buy_amount ?? "0"), units = Number(atomic) / 10 ** t.decimals;
|
|
303
|
+
const updated = await this.store.mutate((rs) => {
|
|
304
|
+
const x = rs.find((y) => y.id === r.id);
|
|
305
|
+
x.state.grid ??= { units: Array(L.length - 1).fill(null), cost: Array(L.length - 1).fill(null), atomic: Array(L.length - 1).fill(null) };
|
|
306
|
+
x.state.grid.units[buyAt] = units;
|
|
307
|
+
x.state.grid.cost[buyAt] = usd ?? r.amount_usd;
|
|
308
|
+
x.state.grid.atomic[buyAt] = atomic;
|
|
309
|
+
x.state.fills.push({ ts: new Date(this.now()).toISOString(), ok: true, usd, tx: res.tx, paper: this.exec.mode === "paper", side: "buy", units });
|
|
310
|
+
x.state.fills = x.state.fills.slice(-50);
|
|
311
|
+
tally(x, "buy", usd, units);
|
|
312
|
+
x.state.runs += 1;
|
|
313
|
+
x.state.failures = 0;
|
|
314
|
+
x.state.last_error = undefined;
|
|
315
|
+
x.state.next_run = undefined;
|
|
316
|
+
return { ...x };
|
|
317
|
+
});
|
|
318
|
+
this.o.onEvent?.({ type: "filled", rule: updated, detail: `Grid bought level ${buyAt + 1} at about $${p}${usd ? ` for $${usd.toFixed(2)}` : ""}` });
|
|
319
|
+
}
|
|
222
320
|
/** Back off after a failure. Stops retry fast; anything else slows down and stops after 5 tries. */
|
|
223
321
|
async fail(r, code, reason) {
|
|
224
322
|
const urgent = r.kind === "stop_loss" || r.kind === "trailing_stop";
|
|
@@ -227,6 +325,7 @@ export class Autopilot {
|
|
|
227
325
|
const x = rs.find((y) => y.id === r.id);
|
|
228
326
|
x.state.failures += 1;
|
|
229
327
|
x.state.last_error = reason;
|
|
328
|
+
x.state.fail_count = (x.state.fail_count ?? 0) + 1;
|
|
230
329
|
x.state.fills.push({ ts: new Date(this.now()).toISOString(), ok: false, reason });
|
|
231
330
|
x.state.fills = x.state.fills.slice(-50);
|
|
232
331
|
if (code === "denied") {
|
|
@@ -241,6 +340,10 @@ export class Autopilot {
|
|
|
241
340
|
});
|
|
242
341
|
this.o.onEvent?.({ type: "failed", rule: updated, detail: reason });
|
|
243
342
|
}
|
|
343
|
+
async finishAs(id, status, why) {
|
|
344
|
+
const r = await this.store.mutate((rs) => { const x = rs.find((y) => y.id === id); x.status = status; x.state.last_error = why; return { ...x }; });
|
|
345
|
+
this.o.onEvent?.({ type: "cancelled", rule: r, detail: why });
|
|
346
|
+
}
|
|
244
347
|
async finish(id, status, why) {
|
|
245
348
|
const r = await this.store.mutate((rs) => { const x = rs.find((y) => y.id === id); x.status = status; x.state.last_error = why; return { ...x }; });
|
|
246
349
|
this.o.onEvent?.({ type: status, rule: r, detail: why });
|
|
@@ -261,6 +364,18 @@ export class Autopilot {
|
|
|
261
364
|
});
|
|
262
365
|
}
|
|
263
366
|
}
|
|
367
|
+
/** Running totals for a rule's trades. */
|
|
368
|
+
function tally(x, side, usd, units) {
|
|
369
|
+
x.state.ok_count = (x.state.ok_count ?? 0) + 1;
|
|
370
|
+
if (side === "buy") {
|
|
371
|
+
x.state.spent_usd = (x.state.spent_usd ?? 0) + (usd ?? 0);
|
|
372
|
+
x.state.bought_units = (x.state.bought_units ?? 0) + units;
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
x.state.received_usd = (x.state.received_usd ?? 0) + (usd ?? 0);
|
|
376
|
+
x.state.sold_units = (x.state.sold_units ?? 0) + units;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
264
379
|
/** Token balances for live sells (native coin or token), straight from public RPCs. */
|
|
265
380
|
export async function liveBalance(addresses, chain, t, rpc, f = fetch) {
|
|
266
381
|
if (chain === "solana") {
|
package/dist/autopilot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autopilot.js","sourceRoot":"","sources":["../src/autopilot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"autopilot.js","sourceRoot":"","sources":["../src/autopilot.ts"],"names":[],"mappings":"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"}
|
package/dist/bots.d.ts
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { Chain } from "./chains.js";
|
|
2
|
+
import { gridLevels, type Rule, type RuleInput } from "./rules.js";
|
|
3
|
+
export interface TemplateField {
|
|
4
|
+
key: string;
|
|
5
|
+
label: string;
|
|
6
|
+
kind: "usd" | "pct" | "int" | "choice";
|
|
7
|
+
default: number | string;
|
|
8
|
+
min?: number;
|
|
9
|
+
max?: number;
|
|
10
|
+
choices?: [string, string][];
|
|
11
|
+
}
|
|
12
|
+
export interface Template {
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
blurb: string;
|
|
16
|
+
fields: TemplateField[];
|
|
17
|
+
risk: string;
|
|
18
|
+
}
|
|
19
|
+
/** Owner-facing catalog. Each builds plain rules the owner can read before turning them on. */
|
|
20
|
+
export declare const TEMPLATES: Template[];
|
|
21
|
+
/** The rules a template makes, at today's price. Throws a plain reason for a bad field. */
|
|
22
|
+
export declare function buildBot(templateId: string, token: string, chain: Chain, params: Record<string, unknown>, price: number | undefined): {
|
|
23
|
+
bot: string;
|
|
24
|
+
name: string;
|
|
25
|
+
rules: RuleInput[];
|
|
26
|
+
};
|
|
27
|
+
export interface BotSummary {
|
|
28
|
+
id: string;
|
|
29
|
+
name: string;
|
|
30
|
+
template: string | null;
|
|
31
|
+
chain: Chain;
|
|
32
|
+
token: string;
|
|
33
|
+
status: "running" | "paused" | "waiting" | "done" | "stopped" | "error";
|
|
34
|
+
rules: {
|
|
35
|
+
id: string;
|
|
36
|
+
description: string;
|
|
37
|
+
status: string;
|
|
38
|
+
last_error?: string;
|
|
39
|
+
}[];
|
|
40
|
+
trades_ok: number;
|
|
41
|
+
trades_failed: number;
|
|
42
|
+
success_rate: number | null;
|
|
43
|
+
spent_usd: number;
|
|
44
|
+
received_usd: number;
|
|
45
|
+
units_held: number;
|
|
46
|
+
value_now_usd: number | null;
|
|
47
|
+
/** received + value now − spent, when the bot bought something. */
|
|
48
|
+
result_usd: number | null;
|
|
49
|
+
result_pct: number | null;
|
|
50
|
+
round_trips: number;
|
|
51
|
+
last_trade: string | null;
|
|
52
|
+
last_price: number | null;
|
|
53
|
+
started: string;
|
|
54
|
+
}
|
|
55
|
+
/** Status board: rules grouped into bots (a rule made by hand is a bot of one). */
|
|
56
|
+
export declare function summarize(rules: Rule[]): BotSummary[];
|
|
57
|
+
/** Grid levels for showing a grid bot's range. */
|
|
58
|
+
export { gridLevels };
|
|
59
|
+
interface ShareFile {
|
|
60
|
+
share: boolean;
|
|
61
|
+
install: string;
|
|
62
|
+
last_sent?: string;
|
|
63
|
+
}
|
|
64
|
+
export declare function shareSettings(dir?: string): ShareFile;
|
|
65
|
+
export declare function setShare(on: boolean, dir?: string): ShareFile;
|
|
66
|
+
/**
|
|
67
|
+
* What is shared, when the owner turns it on: per bot, the template, chain and token symbol (only for the
|
|
68
|
+
* built-in or listed tokens), trade counts, success rate, result %, round trips and days running. A random
|
|
69
|
+
* id for this install lets Tollkit replace earlier reports instead of counting them twice. No addresses,
|
|
70
|
+
* amounts in dollars, transaction ids or keys.
|
|
71
|
+
*/
|
|
72
|
+
export declare function shareReport(bots: BotSummary[], install: string, symbolOf: (chain: Chain, token: string) => string | null, now?: number): {
|
|
73
|
+
install: string;
|
|
74
|
+
bots: {
|
|
75
|
+
bot: string;
|
|
76
|
+
template: string | null;
|
|
77
|
+
chain: Chain;
|
|
78
|
+
token: string | null;
|
|
79
|
+
status: "error" | "done" | "paused" | "running" | "waiting" | "stopped";
|
|
80
|
+
trades_ok: number;
|
|
81
|
+
trades_failed: number;
|
|
82
|
+
result_pct: number | null;
|
|
83
|
+
round_trips: number;
|
|
84
|
+
days: number;
|
|
85
|
+
}[];
|
|
86
|
+
};
|
|
87
|
+
/** Sends the report at most once a day. */
|
|
88
|
+
export declare function maybeShare(dir: string | undefined, bots: BotSummary[], symbolOf: (chain: Chain, token: string) => string | null, o: {
|
|
89
|
+
fetch?: typeof fetch;
|
|
90
|
+
proxy: string;
|
|
91
|
+
now?: number;
|
|
92
|
+
}): Promise<boolean>;
|
package/dist/bots.js
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bots: ready-made, rule-based (no AI) trading bots built from the autopilot's rules, a status board for them,
|
|
3
|
+
* and an opt-in, anonymous share of their results for Tollkit's public bot board.
|
|
4
|
+
*
|
|
5
|
+
* A bot is one or more rules made together from a template; they share a bot id. Every trade a bot makes is an
|
|
6
|
+
* ordinary autopilot fill, so the owner's limits, approvals, the 0.5% fee and receipts all apply.
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
9
|
+
import { randomUUID } from "node:crypto";
|
|
10
|
+
import path from "node:path";
|
|
11
|
+
import { walletHome } from "./paths.js";
|
|
12
|
+
import { describeRule, gridLevels, ruleProblem } from "./rules.js";
|
|
13
|
+
/** Owner-facing catalog. Each builds plain rules the owner can read before turning them on. */
|
|
14
|
+
export const TEMPLATES = [
|
|
15
|
+
{ id: "dca", name: "Steady buyer", blurb: "Buys a fixed dollar amount on a schedule, whatever the price (dollar-cost averaging).", risk: "Keeps buying in a falling market.",
|
|
16
|
+
fields: [{ key: "amount_usd", label: "Dollars each time", kind: "usd", default: 25, min: 1 }, { key: "every", label: "How often", kind: "choice", default: "week", choices: [["day", "Every day"], ["week", "Every week"]] }, { key: "times", label: "How many buys (0 = no end)", kind: "int", default: 0, min: 0, max: 10000 }] },
|
|
17
|
+
{ id: "dip", name: "Buy the dip", blurb: "Buys when the price falls a set amount, then sells for a profit if it recovers.", risk: "The price may keep falling after it buys.",
|
|
18
|
+
fields: [{ key: "amount_usd", label: "Dollars to buy", kind: "usd", default: 50, min: 1 }, { key: "drop_pct", label: "Buy after a drop of (%)", kind: "pct", default: 5, min: 0.5, max: 80 }, { key: "profit_pct", label: "Then sell at a gain of (%)", kind: "pct", default: 8, min: 0.5, max: 500 }] },
|
|
19
|
+
{ id: "protect", name: "Protect a position", blurb: "Sells what you hold if the price falls too far, or takes the profit if it rises; whichever comes first.", risk: "A quick dip can trigger the stop, then recover.",
|
|
20
|
+
fields: [{ key: "sell_percent", label: "Share of your holding to sell (%)", kind: "pct", default: 100, min: 1, max: 100 }, { key: "stop_pct", label: "Stop if it falls (%)", kind: "pct", default: 10, min: 0.5, max: 90 }, { key: "profit_pct", label: "Take profit if it rises (%)", kind: "pct", default: 20, min: 0.5, max: 1000 }] },
|
|
21
|
+
{ id: "trail", name: "Trailing stop", blurb: "Follows the price up and sells if it falls a set amount from its highest point.", risk: "Normal swings can trigger it.",
|
|
22
|
+
fields: [{ key: "sell_percent", label: "Share of your holding to sell (%)", kind: "pct", default: 100, min: 1, max: 100 }, { key: "trail_pct", label: "Sell after a fall from the high of (%)", kind: "pct", default: 10, min: 0.5, max: 90 }] },
|
|
23
|
+
{ id: "ladder", name: "Take-profit ladder", blurb: "Sells a quarter at +10%, a quarter at +25% and the rest at +50% (you can change the steps).", risk: "Sells early if the price keeps climbing.",
|
|
24
|
+
fields: [{ key: "step1", label: "First sale at a gain of (%)", kind: "pct", default: 10, min: 1, max: 1000 }, { key: "step2", label: "Second at (%)", kind: "pct", default: 25, min: 1, max: 1000 }, { key: "step3", label: "Last at (%)", kind: "pct", default: 50, min: 1, max: 1000 }] },
|
|
25
|
+
{ id: "grid", name: "Grid trader", blurb: "Buys a little at each level as the price falls through a range and sells each one a level higher. Works best when the price moves sideways.", risk: "If the price drops out of the range, it holds what it bought; if it rises out, it stops buying.",
|
|
26
|
+
fields: [{ key: "amount_usd", label: "Dollars per level", kind: "usd", default: 20, min: 1 }, { key: "range_pct", label: "Range around today's price (± %)", kind: "pct", default: 10, min: 1, max: 60 }, { key: "levels", label: "Levels", kind: "int", default: 8, min: 3, max: 40 }] },
|
|
27
|
+
];
|
|
28
|
+
const round = (n) => Number(n.toPrecision(6));
|
|
29
|
+
/** The rules a template makes, at today's price. Throws a plain reason for a bad field. */
|
|
30
|
+
export function buildBot(templateId, token, chain, params, price) {
|
|
31
|
+
const tpl = TEMPLATES.find((t) => t.id === templateId);
|
|
32
|
+
if (!tpl)
|
|
33
|
+
throw new Error("Pick a bot.");
|
|
34
|
+
const v = {};
|
|
35
|
+
for (const f of tpl.fields) {
|
|
36
|
+
const raw = params[f.key] ?? f.default;
|
|
37
|
+
if (f.kind === "choice") {
|
|
38
|
+
if (!f.choices.some((c) => c[0] === raw))
|
|
39
|
+
throw new Error(`Pick ${f.label.toLowerCase()}.`);
|
|
40
|
+
v[f.key] = String(raw);
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const n = Number(raw);
|
|
44
|
+
if (!Number.isFinite(n) || (f.min !== undefined && n < f.min) || (f.max !== undefined && n > f.max) || (f.kind === "int" && !Number.isInteger(n)))
|
|
45
|
+
throw new Error(`${f.label}: ${f.min !== undefined ? `from ${f.min}` : ""}${f.max !== undefined ? ` to ${f.max}` : ""}.`);
|
|
46
|
+
v[f.key] = n;
|
|
47
|
+
}
|
|
48
|
+
const needsPrice = templateId !== "dca";
|
|
49
|
+
if (needsPrice && !(price && price > 0))
|
|
50
|
+
throw new Error("No price for this token right now, so the bot's levels can't be set. Try again in a minute.");
|
|
51
|
+
const bot = randomUUID().slice(0, 8), T = token.length > 12 ? `${token.slice(0, 4)}…` : token.toUpperCase();
|
|
52
|
+
const name = `${tpl.name} · ${T}`;
|
|
53
|
+
const base = { chain, token, bot, bot_name: name, template: tpl.id };
|
|
54
|
+
const n = (k) => v[k];
|
|
55
|
+
const p = price;
|
|
56
|
+
let rules;
|
|
57
|
+
switch (tpl.id) {
|
|
58
|
+
case "dca":
|
|
59
|
+
rules = [{ ...base, kind: "dca", amount_usd: n("amount_usd"), every: v.every, ...(n("times") > 0 ? { times: n("times") } : {}), ...(v.every === "week" ? { weekday: new Date().getUTCDay() } : {}) }];
|
|
60
|
+
break;
|
|
61
|
+
case "dip": {
|
|
62
|
+
const buyAt = round(p * (1 - n("drop_pct") / 100));
|
|
63
|
+
// The take-profit waits for the buy, then sells exactly what the bot bought (not the rest of your holding).
|
|
64
|
+
rules = [{ ...base, kind: "limit_buy", amount_usd: n("amount_usd"), trigger_price: buyAt },
|
|
65
|
+
{ ...base, kind: "take_profit", sell_from: "@0", after: "@0", trigger_price: round(buyAt * (1 + n("profit_pct") / 100)) }];
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
case "protect": {
|
|
69
|
+
const group = `bot-${bot}`;
|
|
70
|
+
rules = [{ ...base, group, kind: "stop_loss", sell_percent: n("sell_percent"), trigger_price: round(p * (1 - n("stop_pct") / 100)) },
|
|
71
|
+
{ ...base, group, kind: "take_profit", sell_percent: n("sell_percent"), trigger_price: round(p * (1 + n("profit_pct") / 100)) }];
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
case "trail":
|
|
75
|
+
rules = [{ ...base, kind: "trailing_stop", sell_percent: n("sell_percent"), trail_pct: n("trail_pct") }];
|
|
76
|
+
break;
|
|
77
|
+
case "ladder": {
|
|
78
|
+
const steps = [n("step1"), n("step2"), n("step3")];
|
|
79
|
+
if (!(steps[0] < steps[1] && steps[1] < steps[2]))
|
|
80
|
+
throw new Error("Each step needs a bigger gain than the one before.");
|
|
81
|
+
// 25% of the holding, then a third of what's left (25% of the start), then all the rest.
|
|
82
|
+
rules = [{ ...base, kind: "take_profit", sell_percent: 25, trigger_price: round(p * (1 + steps[0] / 100)) },
|
|
83
|
+
{ ...base, kind: "take_profit", sell_percent: 33.33, trigger_price: round(p * (1 + steps[1] / 100)) },
|
|
84
|
+
{ ...base, kind: "take_profit", sell_percent: 100, trigger_price: round(p * (1 + steps[2] / 100)) }];
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
case "grid":
|
|
88
|
+
rules = [{ ...base, kind: "grid", amount_usd: n("amount_usd"), lower_price: round(p * (1 - n("range_pct") / 100)), upper_price: round(p * (1 + n("range_pct") / 100)), levels: n("levels") }];
|
|
89
|
+
break;
|
|
90
|
+
default: throw new Error("Pick a bot.");
|
|
91
|
+
}
|
|
92
|
+
for (const r of rules) {
|
|
93
|
+
const why = ruleProblem(r);
|
|
94
|
+
if (why)
|
|
95
|
+
throw new Error(why);
|
|
96
|
+
}
|
|
97
|
+
return { bot, name, rules };
|
|
98
|
+
}
|
|
99
|
+
/** Status board: rules grouped into bots (a rule made by hand is a bot of one). */
|
|
100
|
+
export function summarize(rules) {
|
|
101
|
+
const groups = new Map();
|
|
102
|
+
for (const r of rules) {
|
|
103
|
+
if (r.status === "proposed")
|
|
104
|
+
continue;
|
|
105
|
+
const k = r.bot ?? `rule-${r.id}`;
|
|
106
|
+
groups.set(k, [...(groups.get(k) ?? []), r]);
|
|
107
|
+
}
|
|
108
|
+
const out = [];
|
|
109
|
+
for (const [id, rs] of groups) {
|
|
110
|
+
const s = (f) => rs.reduce((a, r) => a + (f(r) ?? 0), 0);
|
|
111
|
+
const ok = s((r) => r.state.ok_count ?? r.state.fills.filter((x) => x.ok).length), bad = s((r) => r.state.fail_count ?? r.state.fills.filter((x) => !x.ok).length);
|
|
112
|
+
const spent = s((r) => r.state.spent_usd), got = s((r) => r.state.received_usd);
|
|
113
|
+
const held = Math.max(0, s((r) => r.state.bought_units) - s((r) => r.state.sold_units));
|
|
114
|
+
const price = rs.map((r) => r.state.last_price).find((x) => typeof x === "number") ?? null;
|
|
115
|
+
const value = price !== null ? held * price : null;
|
|
116
|
+
const st = rs.map((r) => r.status);
|
|
117
|
+
const status = st.some((x) => x === "error") ? "error" : st.some((x) => x === "active") ? (ok > 0 || rs.some((r) => r.kind === "grid" || r.kind === "dca") ? "running" : "waiting") : st.some((x) => x === "paused") ? "paused" : st.every((x) => x === "done" || (x === "cancelled" && st.includes("done"))) ? "done" : "stopped";
|
|
118
|
+
const last = rs.flatMap((r) => r.state.fills.filter((x) => x.ok).map((x) => x.ts)).sort().at(-1) ?? null;
|
|
119
|
+
const result = spent > 0 && value !== null ? got + value - spent : spent > 0 && held === 0 ? got - spent : null;
|
|
120
|
+
out.push({
|
|
121
|
+
id, name: rs[0].bot_name ?? describeRule(rs[0]), template: rs[0].template ?? null, chain: rs[0].chain, token: rs[0].token, status,
|
|
122
|
+
rules: rs.map((r) => ({ id: r.id, description: describeRule(r), status: r.status, ...(r.state.last_error ? { last_error: r.state.last_error } : {}) })),
|
|
123
|
+
trades_ok: ok, trades_failed: bad, success_rate: ok + bad ? Math.round((ok / (ok + bad)) * 1000) / 10 : null,
|
|
124
|
+
spent_usd: Math.round(spent * 100) / 100, received_usd: Math.round(got * 100) / 100, units_held: held, value_now_usd: value === null ? null : Math.round(value * 100) / 100,
|
|
125
|
+
result_usd: result === null ? null : Math.round(result * 100) / 100, result_pct: result === null ? null : Math.round((result / spent) * 1000) / 10,
|
|
126
|
+
round_trips: s((r) => r.state.round_trips), last_trade: last, last_price: price, started: rs.map((r) => r.created_at).sort()[0],
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
const order = { running: 0, waiting: 1, error: 2, paused: 3, done: 4, stopped: 5 };
|
|
130
|
+
return out.sort((a, b) => order[a.status] - order[b.status] || b.started.localeCompare(a.started));
|
|
131
|
+
}
|
|
132
|
+
/** Grid levels for showing a grid bot's range. */
|
|
133
|
+
export { gridLevels };
|
|
134
|
+
const shareFile = (dir) => path.join(walletHome(dir), "bots.json");
|
|
135
|
+
export function shareSettings(dir) {
|
|
136
|
+
try {
|
|
137
|
+
if (existsSync(shareFile(dir))) {
|
|
138
|
+
const j = JSON.parse(readFileSync(shareFile(dir), "utf8"));
|
|
139
|
+
if (typeof j.install === "string")
|
|
140
|
+
return j;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch { /* new */ }
|
|
144
|
+
return { share: false, install: randomUUID() };
|
|
145
|
+
}
|
|
146
|
+
export function setShare(on, dir) {
|
|
147
|
+
const f = { ...shareSettings(dir), share: on };
|
|
148
|
+
writeFileSync(shareFile(dir), JSON.stringify(f, null, 2), { mode: 0o600 });
|
|
149
|
+
return f;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* What is shared, when the owner turns it on: per bot, the template, chain and token symbol (only for the
|
|
153
|
+
* built-in or listed tokens), trade counts, success rate, result %, round trips and days running. A random
|
|
154
|
+
* id for this install lets Tollkit replace earlier reports instead of counting them twice. No addresses,
|
|
155
|
+
* amounts in dollars, transaction ids or keys.
|
|
156
|
+
*/
|
|
157
|
+
export function shareReport(bots, install, symbolOf, now = Date.now()) {
|
|
158
|
+
return {
|
|
159
|
+
install,
|
|
160
|
+
bots: bots.filter((b) => b.template && b.trades_ok + b.trades_failed > 0).slice(0, 50).map((b) => ({
|
|
161
|
+
bot: b.id, template: b.template, chain: b.chain, token: symbolOf(b.chain, b.token), status: b.status,
|
|
162
|
+
trades_ok: b.trades_ok, trades_failed: b.trades_failed, result_pct: b.result_pct, round_trips: b.round_trips,
|
|
163
|
+
days: Math.max(0, Math.round((now - Date.parse(b.started)) / 86_400_000)),
|
|
164
|
+
})),
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/** Sends the report at most once a day. */
|
|
168
|
+
export async function maybeShare(dir, bots, symbolOf, o) {
|
|
169
|
+
const s = shareSettings(dir), now = o.now ?? Date.now();
|
|
170
|
+
if (!s.share)
|
|
171
|
+
return false;
|
|
172
|
+
if (s.last_sent && now - Date.parse(s.last_sent) < 23 * 3600_000)
|
|
173
|
+
return false;
|
|
174
|
+
const body = shareReport(bots, s.install, symbolOf, now);
|
|
175
|
+
if (!body.bots.length)
|
|
176
|
+
return false;
|
|
177
|
+
const r = await (o.fetch ?? fetch)(`${o.proxy}/bots/report`, { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify(body), signal: AbortSignal.timeout(15_000) });
|
|
178
|
+
if (!r.ok)
|
|
179
|
+
return false;
|
|
180
|
+
writeFileSync(shareFile(dir), JSON.stringify({ ...s, last_sent: new Date(now).toISOString() }, null, 2), { mode: 0o600 });
|
|
181
|
+
return true;
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=bots.js.map
|
package/dist/bots.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bots.js","sourceRoot":"","sources":["../src/bots.ts"],"names":[],"mappings":"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"}
|
package/dist/bridge.js
CHANGED
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
20
20
|
import path from "node:path";
|
|
21
21
|
import { createHash } from "node:crypto";
|
|
22
|
-
import { Connection, Keypair, PublicKey, SystemProgram, Transaction, TransactionInstruction
|
|
22
|
+
import { Connection, Keypair, PublicKey, SystemProgram, Transaction, TransactionInstruction } from "@solana/web3.js";
|
|
23
|
+
import { sendAndConfirm } from "./solconfirm.js";
|
|
23
24
|
import { AbiCoder, Contract, Interface, JsonRpcProvider, ZeroAddress, ZeroHash, concat, getAddress, getBytes, hexlify, toUtf8Bytes, zeroPadBytes, zeroPadValue } from "ethers";
|
|
24
25
|
import { DEFAULT_RPC, EVM_CHAIN_ID } from "./chains.js";
|
|
25
26
|
import { walletHome } from "./paths.js";
|
|
@@ -258,7 +259,7 @@ export class Mover {
|
|
|
258
259
|
const tx = await this.solanaBurnTx(q, owner, cfg, event, feeAtaExists);
|
|
259
260
|
if (this.o.sendSolana)
|
|
260
261
|
return this.o.sendSolana(tx, [keys.solana, event]);
|
|
261
|
-
return
|
|
262
|
+
return sendAndConfirm(new Connection(this.rpc("solana"), "confirmed"), tx, [keys.solana, event]);
|
|
262
263
|
}
|
|
263
264
|
list() {
|
|
264
265
|
try {
|