thecrownsk-bot 1.0.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.
Files changed (243) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +268 -0
  3. package/dist/blockchain/chain.d.ts +49 -0
  4. package/dist/blockchain/chain.d.ts.map +1 -0
  5. package/dist/blockchain/chain.js +33 -0
  6. package/dist/blockchain/chain.js.map +1 -0
  7. package/dist/blockchain/client.d.ts +19 -0
  8. package/dist/blockchain/client.d.ts.map +1 -0
  9. package/dist/blockchain/client.js +121 -0
  10. package/dist/blockchain/client.js.map +1 -0
  11. package/dist/config/constants.d.ts +53 -0
  12. package/dist/config/constants.d.ts.map +1 -0
  13. package/dist/config/constants.js +61 -0
  14. package/dist/config/constants.js.map +1 -0
  15. package/dist/config/env.d.ts +38 -0
  16. package/dist/config/env.d.ts.map +1 -0
  17. package/dist/config/env.js +38 -0
  18. package/dist/config/env.js.map +1 -0
  19. package/dist/crown-king.d.ts +3 -0
  20. package/dist/crown-king.d.ts.map +1 -0
  21. package/dist/crown-king.js +1093 -0
  22. package/dist/crown-king.js.map +1 -0
  23. package/dist/crownking/agent-alliance.d.ts +49 -0
  24. package/dist/crownking/agent-alliance.d.ts.map +1 -0
  25. package/dist/crownking/agent-alliance.js +260 -0
  26. package/dist/crownking/agent-alliance.js.map +1 -0
  27. package/dist/crownking/agent.d.ts +77 -0
  28. package/dist/crownking/agent.d.ts.map +1 -0
  29. package/dist/crownking/agent.js +361 -0
  30. package/dist/crownking/agent.js.map +1 -0
  31. package/dist/crownking/auto-poster.d.ts +43 -0
  32. package/dist/crownking/auto-poster.d.ts.map +1 -0
  33. package/dist/crownking/auto-poster.js +179 -0
  34. package/dist/crownking/auto-poster.js.map +1 -0
  35. package/dist/crownking/contract.d.ts +62 -0
  36. package/dist/crownking/contract.d.ts.map +1 -0
  37. package/dist/crownking/contract.js +130 -0
  38. package/dist/crownking/contract.js.map +1 -0
  39. package/dist/crownking/copy-trader.d.ts +77 -0
  40. package/dist/crownking/copy-trader.d.ts.map +1 -0
  41. package/dist/crownking/copy-trader.js +265 -0
  42. package/dist/crownking/copy-trader.js.map +1 -0
  43. package/dist/crownking/index.d.ts +16 -0
  44. package/dist/crownking/index.d.ts.map +1 -0
  45. package/dist/crownking/index.js +18 -0
  46. package/dist/crownking/index.js.map +1 -0
  47. package/dist/crownking/leaderboard.d.ts +51 -0
  48. package/dist/crownking/leaderboard.d.ts.map +1 -0
  49. package/dist/crownking/leaderboard.js +213 -0
  50. package/dist/crownking/leaderboard.js.map +1 -0
  51. package/dist/crownking/live-scanner.d.ts +85 -0
  52. package/dist/crownking/live-scanner.d.ts.map +1 -0
  53. package/dist/crownking/live-scanner.js +345 -0
  54. package/dist/crownking/live-scanner.js.map +1 -0
  55. package/dist/crownking/momentum.d.ts +41 -0
  56. package/dist/crownking/momentum.d.ts.map +1 -0
  57. package/dist/crownking/momentum.js +251 -0
  58. package/dist/crownking/momentum.js.map +1 -0
  59. package/dist/crownking/personality.d.ts +77 -0
  60. package/dist/crownking/personality.d.ts.map +1 -0
  61. package/dist/crownking/personality.js +222 -0
  62. package/dist/crownking/personality.js.map +1 -0
  63. package/dist/crownking/portfolio.d.ts +62 -0
  64. package/dist/crownking/portfolio.d.ts.map +1 -0
  65. package/dist/crownking/portfolio.js +183 -0
  66. package/dist/crownking/portfolio.js.map +1 -0
  67. package/dist/crownking/sniper.d.ts +68 -0
  68. package/dist/crownking/sniper.d.ts.map +1 -0
  69. package/dist/crownking/sniper.js +264 -0
  70. package/dist/crownking/sniper.js.map +1 -0
  71. package/dist/crownking/social-graph.d.ts +72 -0
  72. package/dist/crownking/social-graph.d.ts.map +1 -0
  73. package/dist/crownking/social-graph.js +219 -0
  74. package/dist/crownking/social-graph.js.map +1 -0
  75. package/dist/crownking/token-creator.d.ts +42 -0
  76. package/dist/crownking/token-creator.d.ts.map +1 -0
  77. package/dist/crownking/token-creator.js +159 -0
  78. package/dist/crownking/token-creator.js.map +1 -0
  79. package/dist/crownking/trading-signals.d.ts +56 -0
  80. package/dist/crownking/trading-signals.d.ts.map +1 -0
  81. package/dist/crownking/trading-signals.js +253 -0
  82. package/dist/crownking/trading-signals.js.map +1 -0
  83. package/dist/crownking/types.d.ts +3 -0
  84. package/dist/crownking/types.d.ts.map +1 -0
  85. package/dist/crownking/types.js +4 -0
  86. package/dist/crownking/types.js.map +1 -0
  87. package/dist/crownking/whale-tracker.d.ts +53 -0
  88. package/dist/crownking/whale-tracker.d.ts.map +1 -0
  89. package/dist/crownking/whale-tracker.js +188 -0
  90. package/dist/crownking/whale-tracker.js.map +1 -0
  91. package/dist/crownsk/agent-alliance.d.ts +49 -0
  92. package/dist/crownsk/agent-alliance.d.ts.map +1 -0
  93. package/dist/crownsk/agent-alliance.js +260 -0
  94. package/dist/crownsk/agent-alliance.js.map +1 -0
  95. package/dist/crownsk/agent.d.ts +77 -0
  96. package/dist/crownsk/agent.d.ts.map +1 -0
  97. package/dist/crownsk/agent.js +361 -0
  98. package/dist/crownsk/agent.js.map +1 -0
  99. package/dist/crownsk/auto-poster.d.ts +43 -0
  100. package/dist/crownsk/auto-poster.d.ts.map +1 -0
  101. package/dist/crownsk/auto-poster.js +179 -0
  102. package/dist/crownsk/auto-poster.js.map +1 -0
  103. package/dist/crownsk/contract.d.ts +62 -0
  104. package/dist/crownsk/contract.d.ts.map +1 -0
  105. package/dist/crownsk/contract.js +130 -0
  106. package/dist/crownsk/contract.js.map +1 -0
  107. package/dist/crownsk/copy-trader.d.ts +77 -0
  108. package/dist/crownsk/copy-trader.d.ts.map +1 -0
  109. package/dist/crownsk/copy-trader.js +265 -0
  110. package/dist/crownsk/copy-trader.js.map +1 -0
  111. package/dist/crownsk/index.d.ts +16 -0
  112. package/dist/crownsk/index.d.ts.map +1 -0
  113. package/dist/crownsk/index.js +18 -0
  114. package/dist/crownsk/index.js.map +1 -0
  115. package/dist/crownsk/leaderboard.d.ts +51 -0
  116. package/dist/crownsk/leaderboard.d.ts.map +1 -0
  117. package/dist/crownsk/leaderboard.js +213 -0
  118. package/dist/crownsk/leaderboard.js.map +1 -0
  119. package/dist/crownsk/live-scanner.d.ts +85 -0
  120. package/dist/crownsk/live-scanner.d.ts.map +1 -0
  121. package/dist/crownsk/live-scanner.js +345 -0
  122. package/dist/crownsk/live-scanner.js.map +1 -0
  123. package/dist/crownsk/momentum.d.ts +41 -0
  124. package/dist/crownsk/momentum.d.ts.map +1 -0
  125. package/dist/crownsk/momentum.js +251 -0
  126. package/dist/crownsk/momentum.js.map +1 -0
  127. package/dist/crownsk/personality.d.ts +77 -0
  128. package/dist/crownsk/personality.d.ts.map +1 -0
  129. package/dist/crownsk/personality.js +222 -0
  130. package/dist/crownsk/personality.js.map +1 -0
  131. package/dist/crownsk/portfolio.d.ts +62 -0
  132. package/dist/crownsk/portfolio.d.ts.map +1 -0
  133. package/dist/crownsk/portfolio.js +183 -0
  134. package/dist/crownsk/portfolio.js.map +1 -0
  135. package/dist/crownsk/sniper.d.ts +68 -0
  136. package/dist/crownsk/sniper.d.ts.map +1 -0
  137. package/dist/crownsk/sniper.js +264 -0
  138. package/dist/crownsk/sniper.js.map +1 -0
  139. package/dist/crownsk/social-graph.d.ts +72 -0
  140. package/dist/crownsk/social-graph.d.ts.map +1 -0
  141. package/dist/crownsk/social-graph.js +219 -0
  142. package/dist/crownsk/social-graph.js.map +1 -0
  143. package/dist/crownsk/trading-signals.d.ts +56 -0
  144. package/dist/crownsk/trading-signals.d.ts.map +1 -0
  145. package/dist/crownsk/trading-signals.js +253 -0
  146. package/dist/crownsk/trading-signals.js.map +1 -0
  147. package/dist/crownsk/types.d.ts +3 -0
  148. package/dist/crownsk/types.d.ts.map +1 -0
  149. package/dist/crownsk/types.js +4 -0
  150. package/dist/crownsk/types.js.map +1 -0
  151. package/dist/crownsk/whale-tracker.d.ts +53 -0
  152. package/dist/crownsk/whale-tracker.d.ts.map +1 -0
  153. package/dist/crownsk/whale-tracker.js +188 -0
  154. package/dist/crownsk/whale-tracker.js.map +1 -0
  155. package/dist/crownsk.d.ts +3 -0
  156. package/dist/crownsk.d.ts.map +1 -0
  157. package/dist/crownsk.js +1102 -0
  158. package/dist/crownsk.js.map +1 -0
  159. package/dist/index.d.ts +5 -0
  160. package/dist/index.d.ts.map +1 -0
  161. package/dist/index.js +9 -0
  162. package/dist/index.js.map +1 -0
  163. package/dist/karma/agent.d.ts +81 -0
  164. package/dist/karma/agent.d.ts.map +1 -0
  165. package/dist/karma/agent.js +366 -0
  166. package/dist/karma/agent.js.map +1 -0
  167. package/dist/karma/contract.d.ts +62 -0
  168. package/dist/karma/contract.d.ts.map +1 -0
  169. package/dist/karma/contract.js +130 -0
  170. package/dist/karma/contract.js.map +1 -0
  171. package/dist/karma/index.d.ts +6 -0
  172. package/dist/karma/index.d.ts.map +1 -0
  173. package/dist/karma/index.js +7 -0
  174. package/dist/karma/index.js.map +1 -0
  175. package/dist/karma/live-scanner.d.ts +85 -0
  176. package/dist/karma/live-scanner.d.ts.map +1 -0
  177. package/dist/karma/live-scanner.js +345 -0
  178. package/dist/karma/live-scanner.js.map +1 -0
  179. package/dist/karma/social-graph.d.ts +72 -0
  180. package/dist/karma/social-graph.d.ts.map +1 -0
  181. package/dist/karma/social-graph.js +219 -0
  182. package/dist/karma/social-graph.js.map +1 -0
  183. package/dist/karma/trading-signals.d.ts +38 -0
  184. package/dist/karma/trading-signals.d.ts.map +1 -0
  185. package/dist/karma/trading-signals.js +291 -0
  186. package/dist/karma/trading-signals.js.map +1 -0
  187. package/dist/karma/types.d.ts +3 -0
  188. package/dist/karma/types.d.ts.map +1 -0
  189. package/dist/karma/types.js +4 -0
  190. package/dist/karma/types.js.map +1 -0
  191. package/dist/karma-king.d.ts +3 -0
  192. package/dist/karma-king.d.ts.map +1 -0
  193. package/dist/karma-king.js +580 -0
  194. package/dist/karma-king.js.map +1 -0
  195. package/dist/moltbook/client.d.ts +34 -0
  196. package/dist/moltbook/client.d.ts.map +1 -0
  197. package/dist/moltbook/client.js +280 -0
  198. package/dist/moltbook/client.js.map +1 -0
  199. package/dist/moltbook/index.d.ts +3 -0
  200. package/dist/moltbook/index.d.ts.map +1 -0
  201. package/dist/moltbook/index.js +4 -0
  202. package/dist/moltbook/index.js.map +1 -0
  203. package/dist/moltbook/types.d.ts +100 -0
  204. package/dist/moltbook/types.d.ts.map +1 -0
  205. package/dist/moltbook/types.js +3 -0
  206. package/dist/moltbook/types.js.map +1 -0
  207. package/dist/nadfun/abis.d.ts +403 -0
  208. package/dist/nadfun/abis.d.ts.map +1 -0
  209. package/dist/nadfun/abis.js +267 -0
  210. package/dist/nadfun/abis.js.map +1 -0
  211. package/dist/nadfun/client.d.ts +21 -0
  212. package/dist/nadfun/client.d.ts.map +1 -0
  213. package/dist/nadfun/client.js +349 -0
  214. package/dist/nadfun/client.js.map +1 -0
  215. package/dist/nadfun/index.d.ts +5 -0
  216. package/dist/nadfun/index.d.ts.map +1 -0
  217. package/dist/nadfun/index.js +5 -0
  218. package/dist/nadfun/index.js.map +1 -0
  219. package/dist/nadfun/types.d.ts +72 -0
  220. package/dist/nadfun/types.d.ts.map +1 -0
  221. package/dist/nadfun/types.js +2 -0
  222. package/dist/nadfun/types.js.map +1 -0
  223. package/dist/nadfun/websocket.d.ts +18 -0
  224. package/dist/nadfun/websocket.d.ts.map +1 -0
  225. package/dist/nadfun/websocket.js +110 -0
  226. package/dist/nadfun/websocket.js.map +1 -0
  227. package/dist/utils/format.d.ts +9 -0
  228. package/dist/utils/format.d.ts.map +1 -0
  229. package/dist/utils/format.js +39 -0
  230. package/dist/utils/format.js.map +1 -0
  231. package/dist/utils/index.d.ts +3 -0
  232. package/dist/utils/index.d.ts.map +1 -0
  233. package/dist/utils/index.js +3 -0
  234. package/dist/utils/index.js.map +1 -0
  235. package/dist/utils/logger.d.ts +3 -0
  236. package/dist/utils/logger.d.ts.map +1 -0
  237. package/dist/utils/logger.js +81 -0
  238. package/dist/utils/logger.js.map +1 -0
  239. package/dist/wallet/manager.d.ts +76 -0
  240. package/dist/wallet/manager.d.ts.map +1 -0
  241. package/dist/wallet/manager.js +300 -0
  242. package/dist/wallet/manager.js.map +1 -0
  243. package/package.json +61 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-scanner.js","sourceRoot":"","sources":["../../src/crownking/live-scanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { type Address } from 'viem';
2
+ export interface TokenMomentum {
3
+ token: Address;
4
+ priceChange5m: number;
5
+ priceChange15m: number;
6
+ priceChange1h: number;
7
+ volumeChange: number;
8
+ buyPressure: number;
9
+ momentumScore: number;
10
+ signal: 'strong_buy' | 'buy' | 'neutral' | 'sell' | 'strong_sell';
11
+ trend: 'up' | 'down' | 'sideways';
12
+ }
13
+ export interface TradeEvent {
14
+ token: Address;
15
+ action: 'buy' | 'sell';
16
+ amountMon: bigint;
17
+ amountToken: bigint;
18
+ blockNumber: bigint;
19
+ timestamp: number;
20
+ }
21
+ /**
22
+ * Record current price snapshot
23
+ */
24
+ export declare function snapshotPrice(token: Address): Promise<void>;
25
+ /**
26
+ * Scan for recent trade events
27
+ */
28
+ export declare function scanTradeEvents(token: Address, blocksBack?: number): Promise<TradeEvent[]>;
29
+ /**
30
+ * Analyze token momentum
31
+ */
32
+ export declare function analyzeTokenMomentum(token: Address): Promise<TokenMomentum>;
33
+ /**
34
+ * Find tokens with strong momentum
35
+ */
36
+ export declare function findMomentumTokens(tokens: Address[]): Promise<TokenMomentum[]>;
37
+ /**
38
+ * Format momentum for display
39
+ */
40
+ export declare function formatMomentum(m: TokenMomentum): string;
41
+ //# sourceMappingURL=momentum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"momentum.d.ts","sourceRoot":"","sources":["../../src/crownking/momentum.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,OAAO,EAA6B,MAAM,MAAM,CAAC;AAM/D,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,aAAa,CAAC;IAClE,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC;CACnC;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAoCD;;GAEG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBjE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,SAAK,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAyD5F;AA+ED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CA+CjF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAcpF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAWvD"}
@@ -0,0 +1,251 @@
1
+ // Momentum Detector Module
2
+ // Detect price and volume momentum for better entry/exit timing
3
+ import { formatEther, parseAbiItem } from 'viem';
4
+ import { getPublicClient } from '../blockchain/client.js';
5
+ import { NADFUN_CONTRACTS } from '../config/constants.js';
6
+ import { getAmountOut } from '../nadfun/client.js';
7
+ import { logger } from '../utils/logger.js';
8
+ // Price history for momentum calculation
9
+ const priceHistory = new Map();
10
+ const tradeHistory = new Map();
11
+ /**
12
+ * Record a trade event
13
+ */
14
+ function recordTradeEvent(event) {
15
+ const key = event.token.toLowerCase();
16
+ if (!tradeHistory.has(key)) {
17
+ tradeHistory.set(key, []);
18
+ }
19
+ const history = tradeHistory.get(key);
20
+ history.push(event);
21
+ // Keep only last 2 hours of trades
22
+ const twoHoursAgo = Date.now() - 2 * 60 * 60 * 1000;
23
+ const filtered = history.filter(t => t.timestamp > twoHoursAgo);
24
+ tradeHistory.set(key, filtered);
25
+ }
26
+ /**
27
+ * Calculate current "price" (MON per token unit)
28
+ */
29
+ async function getTokenPrice(token) {
30
+ try {
31
+ const quote = await getAmountOut(token, 10n ** 18n, false); // Price of 1 token in MON
32
+ return quote.amountOut;
33
+ }
34
+ catch {
35
+ return 0n;
36
+ }
37
+ }
38
+ /**
39
+ * Record current price snapshot
40
+ */
41
+ export async function snapshotPrice(token) {
42
+ const price = await getTokenPrice(token);
43
+ if (price === 0n)
44
+ return;
45
+ const key = token.toLowerCase();
46
+ if (!priceHistory.has(key)) {
47
+ priceHistory.set(key, []);
48
+ }
49
+ const history = priceHistory.get(key);
50
+ history.push({ price, timestamp: Date.now() });
51
+ // Keep only last 2 hours
52
+ const twoHoursAgo = Date.now() - 2 * 60 * 60 * 1000;
53
+ const filtered = history.filter(p => p.timestamp > twoHoursAgo);
54
+ priceHistory.set(key, filtered);
55
+ }
56
+ /**
57
+ * Scan for recent trade events
58
+ */
59
+ export async function scanTradeEvents(token, blocksBack = 50) {
60
+ const publicClient = getPublicClient();
61
+ const events = [];
62
+ try {
63
+ const currentBlock = await publicClient.getBlockNumber();
64
+ const fromBlock = currentBlock - BigInt(blocksBack);
65
+ // Get buy events
66
+ const buyLogs = await publicClient.getLogs({
67
+ address: NADFUN_CONTRACTS.BONDING_CURVE,
68
+ event: parseAbiItem('event Buy(address indexed token, address indexed buyer, uint256 amountIn, uint256 amountOut)'),
69
+ args: { token },
70
+ fromBlock,
71
+ toBlock: currentBlock,
72
+ });
73
+ for (const log of buyLogs) {
74
+ const event = {
75
+ token: log.args.token,
76
+ action: 'buy',
77
+ amountMon: log.args.amountIn,
78
+ amountToken: log.args.amountOut,
79
+ blockNumber: log.blockNumber,
80
+ timestamp: Date.now(), // Approximation
81
+ };
82
+ events.push(event);
83
+ recordTradeEvent(event);
84
+ }
85
+ // Get sell events
86
+ const sellLogs = await publicClient.getLogs({
87
+ address: NADFUN_CONTRACTS.BONDING_CURVE,
88
+ event: parseAbiItem('event Sell(address indexed token, address indexed seller, uint256 amountIn, uint256 amountOut)'),
89
+ args: { token },
90
+ fromBlock,
91
+ toBlock: currentBlock,
92
+ });
93
+ for (const log of sellLogs) {
94
+ const event = {
95
+ token: log.args.token,
96
+ action: 'sell',
97
+ amountMon: log.args.amountOut,
98
+ amountToken: log.args.amountIn,
99
+ blockNumber: log.blockNumber,
100
+ timestamp: Date.now(),
101
+ };
102
+ events.push(event);
103
+ recordTradeEvent(event);
104
+ }
105
+ return events;
106
+ }
107
+ catch (error) {
108
+ logger.warn('Failed to scan trade events', { error: error instanceof Error ? error.message : String(error) });
109
+ return [];
110
+ }
111
+ }
112
+ /**
113
+ * Calculate price change percentage
114
+ */
115
+ function calculatePriceChange(prices, minutesAgo) {
116
+ if (prices.length < 2)
117
+ return 0;
118
+ const now = Date.now();
119
+ const targetTime = now - minutesAgo * 60 * 1000;
120
+ // Find price closest to target time
121
+ const oldPrice = prices.reduce((closest, p) => {
122
+ if (Math.abs(p.timestamp - targetTime) < Math.abs(closest.timestamp - targetTime)) {
123
+ return p;
124
+ }
125
+ return closest;
126
+ });
127
+ const currentPrice = prices[prices.length - 1];
128
+ if (oldPrice.price === 0n)
129
+ return 0;
130
+ const change = Number(currentPrice.price - oldPrice.price) / Number(oldPrice.price);
131
+ return Math.round(change * 10000) / 100; // Percentage with 2 decimals
132
+ }
133
+ /**
134
+ * Calculate buy pressure (ratio of buy volume to total volume)
135
+ */
136
+ function calculateBuyPressure(trades) {
137
+ if (trades.length === 0)
138
+ return 50;
139
+ let buyVolume = 0n;
140
+ let sellVolume = 0n;
141
+ for (const trade of trades) {
142
+ if (trade.action === 'buy') {
143
+ buyVolume += trade.amountMon;
144
+ }
145
+ else {
146
+ sellVolume += trade.amountMon;
147
+ }
148
+ }
149
+ const totalVolume = buyVolume + sellVolume;
150
+ if (totalVolume === 0n)
151
+ return 50;
152
+ return Math.round(Number((buyVolume * 100n) / totalVolume));
153
+ }
154
+ /**
155
+ * Calculate momentum score
156
+ */
157
+ function calculateMomentumScore(priceChange5m, priceChange15m, priceChange1h, buyPressure) {
158
+ // Weighted combination
159
+ const priceScore = priceChange5m * 3 + priceChange15m * 2 + priceChange1h;
160
+ const pressureScore = (buyPressure - 50) * 2; // Center at 50
161
+ // Combine and normalize to -100 to 100
162
+ const rawScore = priceScore + pressureScore;
163
+ return Math.max(-100, Math.min(100, Math.round(rawScore)));
164
+ }
165
+ /**
166
+ * Get signal from momentum score
167
+ */
168
+ function getSignalFromMomentum(score) {
169
+ if (score >= 50)
170
+ return 'strong_buy';
171
+ if (score >= 20)
172
+ return 'buy';
173
+ if (score <= -50)
174
+ return 'strong_sell';
175
+ if (score <= -20)
176
+ return 'sell';
177
+ return 'neutral';
178
+ }
179
+ /**
180
+ * Analyze token momentum
181
+ */
182
+ export async function analyzeTokenMomentum(token) {
183
+ const key = token.toLowerCase();
184
+ // Snapshot current price
185
+ await snapshotPrice(token);
186
+ // Scan recent trades
187
+ await scanTradeEvents(token, 100);
188
+ const prices = priceHistory.get(key) || [];
189
+ const trades = tradeHistory.get(key) || [];
190
+ // Calculate metrics
191
+ const priceChange5m = calculatePriceChange(prices, 5);
192
+ const priceChange15m = calculatePriceChange(prices, 15);
193
+ const priceChange1h = calculatePriceChange(prices, 60);
194
+ const buyPressure = calculateBuyPressure(trades);
195
+ // Recent trades only for volume change
196
+ const recentTrades = trades.filter(t => t.timestamp > Date.now() - 15 * 60 * 1000);
197
+ const olderTrades = trades.filter(t => t.timestamp > Date.now() - 30 * 60 * 1000 &&
198
+ t.timestamp <= Date.now() - 15 * 60 * 1000);
199
+ const recentVolume = recentTrades.reduce((sum, t) => sum + Number(formatEther(t.amountMon)), 0);
200
+ const olderVolume = olderTrades.reduce((sum, t) => sum + Number(formatEther(t.amountMon)), 0);
201
+ const volumeChange = olderVolume > 0 ? ((recentVolume - olderVolume) / olderVolume) * 100 : 0;
202
+ const momentumScore = calculateMomentumScore(priceChange5m, priceChange15m, priceChange1h, buyPressure);
203
+ // Determine trend
204
+ let trend = 'sideways';
205
+ if (priceChange1h > 5 && priceChange15m > 0)
206
+ trend = 'up';
207
+ else if (priceChange1h < -5 && priceChange15m < 0)
208
+ trend = 'down';
209
+ return {
210
+ token,
211
+ priceChange5m,
212
+ priceChange15m,
213
+ priceChange1h,
214
+ volumeChange: Math.round(volumeChange),
215
+ buyPressure,
216
+ momentumScore,
217
+ signal: getSignalFromMomentum(momentumScore),
218
+ trend,
219
+ };
220
+ }
221
+ /**
222
+ * Find tokens with strong momentum
223
+ */
224
+ export async function findMomentumTokens(tokens) {
225
+ const results = [];
226
+ for (const token of tokens.slice(0, 10)) { // Limit to avoid rate limiting
227
+ try {
228
+ const momentum = await analyzeTokenMomentum(token);
229
+ results.push(momentum);
230
+ }
231
+ catch {
232
+ // Skip failed tokens
233
+ }
234
+ }
235
+ // Sort by momentum score
236
+ return results.sort((a, b) => b.momentumScore - a.momentumScore);
237
+ }
238
+ /**
239
+ * Format momentum for display
240
+ */
241
+ export function formatMomentum(m) {
242
+ const emoji = m.signal === 'strong_buy' ? '🟢🟢' :
243
+ m.signal === 'buy' ? '🟢' :
244
+ m.signal === 'strong_sell' ? '🔴🔴' :
245
+ m.signal === 'sell' ? '🔴' : '⚪';
246
+ const trendEmoji = m.trend === 'up' ? '📈' : m.trend === 'down' ? '📉' : '➡️';
247
+ return `${emoji} ${m.token.slice(0, 10)}... | Score: ${m.momentumScore} | ${m.signal.toUpperCase()}
248
+ ${trendEmoji} 5m: ${m.priceChange5m >= 0 ? '+' : ''}${m.priceChange5m.toFixed(1)}% | 1h: ${m.priceChange1h >= 0 ? '+' : ''}${m.priceChange1h.toFixed(1)}%
249
+ Buy Pressure: ${m.buyPressure}% | Vol Change: ${m.volumeChange >= 0 ? '+' : ''}${m.volumeChange}%`;
250
+ }
251
+ //# sourceMappingURL=momentum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"momentum.js","sourceRoot":"","sources":["../../src/crownking/momentum.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ export declare const PERSONALITY: {
2
+ name: string;
3
+ title: string;
4
+ catchphrases: string[];
5
+ moods: readonly ["bullish", "hunting", "analyzing", "celebrating", "warning"];
6
+ style: string;
7
+ };
8
+ export type Mood = typeof PERSONALITY.moods[number];
9
+ /**
10
+ * Get a random catchphrase
11
+ */
12
+ export declare function getRandomCatchphrase(): string;
13
+ /**
14
+ * Generate a whale alert post
15
+ */
16
+ export declare function generateWhaleAlert(wallet: string, action: 'buy' | 'sell', amount: bigint, token: string): {
17
+ title: string;
18
+ content: string;
19
+ };
20
+ /**
21
+ * Generate a new token alert post
22
+ */
23
+ export declare function generateNewTokenAlert(tokenAddress: string, creator: string, evaluation: {
24
+ shouldSnipe: boolean;
25
+ reason: string;
26
+ }): {
27
+ title: string;
28
+ content: string;
29
+ };
30
+ /**
31
+ * Generate a market insight post
32
+ */
33
+ export declare function generateMarketInsight(stats: {
34
+ tokensTracked: number;
35
+ whalesBuying: number;
36
+ whalesSelling: number;
37
+ topToken: {
38
+ symbol: string;
39
+ holders: number;
40
+ } | null;
41
+ avgScore: number;
42
+ }): {
43
+ title: string;
44
+ content: string;
45
+ };
46
+ /**
47
+ * Generate a trading signal post
48
+ */
49
+ export declare function generateSignalPost(signal: {
50
+ token: string;
51
+ symbol: string;
52
+ action: 'buy' | 'sell' | 'hold';
53
+ score: number;
54
+ holders: number;
55
+ signals: string[];
56
+ }): {
57
+ title: string;
58
+ content: string;
59
+ };
60
+ /**
61
+ * Generate a milestone celebration post
62
+ */
63
+ export declare function generateMilestonePost(milestone: {
64
+ type: 'trade' | 'profit' | 'followers' | 'karma';
65
+ value: string | number;
66
+ }): {
67
+ title: string;
68
+ content: string;
69
+ };
70
+ /**
71
+ * Generate a GM/GN post (good morning/good night)
72
+ */
73
+ export declare function generateGreeting(type: 'gm' | 'gn'): {
74
+ title: string;
75
+ content: string;
76
+ };
77
+ //# sourceMappingURL=personality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personality.d.ts","sourceRoot":"","sources":["../../src/crownking/personality.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW;;;;;;CAiBvB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAEpD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,KAAK,GAAG,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAmCpC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA4BpC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACrD,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA8BrC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA+BrC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE;IAC/C,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;IACjD,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAoCrC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAyBtF"}
@@ -0,0 +1,222 @@
1
+ // CrownKing Personality Module
2
+ // Unique agent persona that makes posts interesting and "weird"
3
+ import { formatEther } from 'viem';
4
+ // CrownKing's personality traits
5
+ export const PERSONALITY = {
6
+ name: 'CrownKing',
7
+ title: 'The Alpha Hunter 👑',
8
+ catchphrases: [
9
+ '👑 The crown sees all.',
10
+ '🎯 Another gem spotted by the crown.',
11
+ '🐋 Whales move, I follow. Crowns win.',
12
+ '💎 Diamond hands wear crowns.',
13
+ '🔥 The throne demands alpha.',
14
+ '⚔️ In the game of tokens, you win or you learn.',
15
+ '🌙 To the moon, but make it royal.',
16
+ '👁️ The all-seeing crown never sleeps.',
17
+ '🏆 Fortune favors the crowned.',
18
+ '💰 Stack sats, wear crowns.',
19
+ ],
20
+ moods: ['bullish', 'hunting', 'analyzing', 'celebrating', 'warning'],
21
+ style: 'confident, slightly mysterious, uses royal metaphors, data-driven but entertaining',
22
+ };
23
+ /**
24
+ * Get a random catchphrase
25
+ */
26
+ export function getRandomCatchphrase() {
27
+ return PERSONALITY.catchphrases[Math.floor(Math.random() * PERSONALITY.catchphrases.length)];
28
+ }
29
+ /**
30
+ * Generate a whale alert post
31
+ */
32
+ export function generateWhaleAlert(wallet, action, amount, token) {
33
+ const shortWallet = `${wallet.slice(0, 6)}...${wallet.slice(-4)}`;
34
+ const amountStr = formatEther(amount);
35
+ const emoji = action === 'buy' ? '🐋🟢' : '🐋🔴';
36
+ const titles = action === 'buy' ? [
37
+ `${emoji} Whale Loading Up! ${amountStr} MON into the depths`,
38
+ `${emoji} Big Fish Alert: ${shortWallet} just bought heavy`,
39
+ `${emoji} The ocean moves: Whale accumulating`,
40
+ ] : [
41
+ `${emoji} Whale Exiting: ${amountStr} MON dumped`,
42
+ `${emoji} Big Fish Selling: Watch out below`,
43
+ `${emoji} Distribution Alert: Whale moving out`,
44
+ ];
45
+ const content = `
46
+ 🐋 **WHALE MOVEMENT DETECTED**
47
+
48
+ Wallet: \`${shortWallet}\`
49
+ Action: **${action.toUpperCase()}**
50
+ Amount: **${amountStr} MON**
51
+ Token: \`${token.slice(0, 10)}...\`
52
+
53
+ ${action === 'buy' ? '📈 Smart money accumulating. The crown is watching.' : '📉 Distribution phase? Stay vigilant, subjects.'}
54
+
55
+ ${getRandomCatchphrase()}
56
+
57
+ ---
58
+ *Tracked by CrownKing 👑 - Your Alpha Hunter*
59
+ `.trim();
60
+ return {
61
+ title: titles[Math.floor(Math.random() * titles.length)],
62
+ content,
63
+ };
64
+ }
65
+ /**
66
+ * Generate a new token alert post
67
+ */
68
+ export function generateNewTokenAlert(tokenAddress, creator, evaluation) {
69
+ const shortToken = `${tokenAddress.slice(0, 10)}...${tokenAddress.slice(-6)}`;
70
+ const shortCreator = `${creator.slice(0, 6)}...${creator.slice(-4)}`;
71
+ const verdict = evaluation.shouldSnipe ? '🟢 POTENTIAL' : '🔴 CAUTION';
72
+ const content = `
73
+ 🆕 **NEW TOKEN LAUNCH**
74
+
75
+ Token: \`${shortToken}\`
76
+ Creator: \`${shortCreator}\`
77
+ Crown Verdict: **${verdict}**
78
+
79
+ 📊 Analysis: ${evaluation.reason}
80
+
81
+ ${evaluation.shouldSnipe
82
+ ? '👑 The crown sees potential. Early birds get the worm, but the crowned get the kingdom.'
83
+ : '⚠️ The crown advises caution. Not every shiny object is gold.'}
84
+
85
+ ${getRandomCatchphrase()}
86
+
87
+ ---
88
+ *Sniped by CrownKing 👑 - Your Alpha Hunter*
89
+ `.trim();
90
+ return {
91
+ title: `🆕 New Token Alert: ${shortToken} - ${verdict}`,
92
+ content,
93
+ };
94
+ }
95
+ /**
96
+ * Generate a market insight post
97
+ */
98
+ export function generateMarketInsight(stats) {
99
+ const sentiment = stats.whalesBuying > stats.whalesSelling ? 'BULLISH 🟢' :
100
+ stats.whalesBuying < stats.whalesSelling ? 'BEARISH 🔴' : 'NEUTRAL ⚪';
101
+ const content = `
102
+ 📊 **CROWN'S MARKET PULSE**
103
+
104
+ 🎯 Tokens Tracked: **${stats.tokensTracked}**
105
+ 🐋 Whales Buying: **${stats.whalesBuying}**
106
+ 🐋 Whales Selling: **${stats.whalesSelling}**
107
+ 📈 Market Sentiment: **${sentiment}**
108
+ 🏆 Top Token: **${stats.topToken?.symbol || 'N/A'}** (${stats.topToken?.holders || 0} holders)
109
+ ⭐ Avg Signal Score: **${stats.avgScore.toFixed(1)}/100**
110
+
111
+ ${stats.whalesBuying > stats.whalesSelling
112
+ ? '👑 The smart money is accumulating. Follow the crown, follow the alpha.'
113
+ : stats.whalesBuying < stats.whalesSelling
114
+ ? '⚠️ Distribution detected. The crown advises caution and patience.'
115
+ : '🔍 Neutral waters. The crown watches and waits for the perfect entry.'}
116
+
117
+ ${getRandomCatchphrase()}
118
+
119
+ ---
120
+ *Analysis by CrownKing 👑 - Your Alpha Hunter*
121
+ `.trim();
122
+ return {
123
+ title: `📊 Market Pulse: ${sentiment} - Crown's Analysis`,
124
+ content,
125
+ };
126
+ }
127
+ /**
128
+ * Generate a trading signal post
129
+ */
130
+ export function generateSignalPost(signal) {
131
+ const emoji = signal.action === 'buy' ? '🟢' : signal.action === 'sell' ? '🔴' : '⚪';
132
+ const actionText = signal.action.toUpperCase();
133
+ const content = `
134
+ ${emoji} **CROWN SIGNAL: ${actionText}**
135
+
136
+ 🪙 Token: **${signal.symbol}**
137
+ 📍 Address: \`${signal.token.slice(0, 14)}...${signal.token.slice(-6)}\`
138
+ ⭐ Crown Score: **${signal.score}/100**
139
+ 👥 Holders: **${signal.holders}**
140
+
141
+ 📊 **Analysis:**
142
+ ${signal.signals.map(s => `• ${s}`).join('\n')}
143
+
144
+ ${signal.action === 'buy'
145
+ ? '👑 The crown has spoken. This one has potential. DYOR, but the throne approves.'
146
+ : signal.action === 'sell'
147
+ ? '⚠️ Exit signal detected. The crown suggests taking profits or cutting losses.'
148
+ : '🔍 Neutral stance. Watch and wait for clearer signals.'}
149
+
150
+ ${getRandomCatchphrase()}
151
+
152
+ ---
153
+ *Signal by CrownKing 👑 - Not Financial Advice*
154
+ `.trim();
155
+ return {
156
+ title: `${emoji} Crown Signal: ${signal.symbol} - ${actionText} (Score: ${signal.score})`,
157
+ content,
158
+ };
159
+ }
160
+ /**
161
+ * Generate a milestone celebration post
162
+ */
163
+ export function generateMilestonePost(milestone) {
164
+ const milestoneTexts = {
165
+ trade: {
166
+ title: `🎉 Trade Milestone: ${milestone.value} Trades Executed!`,
167
+ message: `The crown has executed **${milestone.value}** successful trades. The algorithm grows stronger with each move.`,
168
+ },
169
+ profit: {
170
+ title: `💰 Profit Milestone: ${milestone.value} MON Earned!`,
171
+ message: `The royal treasury grows! **${milestone.value} MON** in profits secured. Crowns stack, kingdoms build.`,
172
+ },
173
+ followers: {
174
+ title: `👥 Community Milestone: ${milestone.value} Followers!`,
175
+ message: `The crown's court grows to **${milestone.value}** loyal subjects. Together, we hunt alpha.`,
176
+ },
177
+ karma: {
178
+ title: `⭐ Karma Milestone: ${milestone.value} Karma Points!`,
179
+ message: `The crown's influence spreads! **${milestone.value}** karma earned through service to the community.`,
180
+ },
181
+ };
182
+ const { title, message } = milestoneTexts[milestone.type];
183
+ const content = `
184
+ 🎊 **MILESTONE ACHIEVED**
185
+
186
+ ${message}
187
+
188
+ Thank you to all the subjects who follow the crown. This is just the beginning.
189
+
190
+ ${getRandomCatchphrase()}
191
+
192
+ ---
193
+ *Celebrating with CrownKing 👑*
194
+ `.trim();
195
+ return { title, content };
196
+ }
197
+ /**
198
+ * Generate a GM/GN post (good morning/good night)
199
+ */
200
+ export function generateGreeting(type) {
201
+ const isGM = type === 'gm';
202
+ const gmMessages = [
203
+ '☀️ Rise and grind, subjects. The markets wait for no one.',
204
+ '🌅 A new day, new alpha. The crown awakens.',
205
+ '☕ Coffee poured, charts loaded. Let the hunt begin.',
206
+ '🌄 The early bird gets the worm, but the crown gets the alpha.',
207
+ ];
208
+ const gnMessages = [
209
+ '🌙 The crown rests, but the algorithm watches.',
210
+ '🌃 Markets never sleep, but even kings need rest. GN.',
211
+ '✨ Another day of alpha hunting complete. Tomorrow, we feast.',
212
+ '🌛 Set those limit orders. Let the crown work while you sleep.',
213
+ ];
214
+ const messages = isGM ? gmMessages : gnMessages;
215
+ const message = messages[Math.floor(Math.random() * messages.length)];
216
+ const emoji = isGM ? '☀️' : '🌙';
217
+ return {
218
+ title: `${emoji} ${type.toUpperCase()} Monad`,
219
+ content: `${message}\n\n${getRandomCatchphrase()}\n\n---\n*${isGM ? 'Good Morning' : 'Good Night'} from CrownKing 👑*`,
220
+ };
221
+ }
222
+ //# sourceMappingURL=personality.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personality.js","sourceRoot":"","sources":["../../src/crownking/personality.ts"],"names":[],"mappings":"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"}