@waiaas/daemon 2.5.0 → 2.6.0-rc.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.
Files changed (193) hide show
  1. package/dist/api/middleware/error-handler.d.ts +1 -1
  2. package/dist/api/middleware/error-handler.js +2 -2
  3. package/dist/api/middleware/error-handler.js.map +1 -1
  4. package/dist/api/routes/admin.d.ts.map +1 -1
  5. package/dist/api/routes/admin.js +6 -30
  6. package/dist/api/routes/admin.js.map +1 -1
  7. package/dist/api/routes/connect-info.d.ts.map +1 -1
  8. package/dist/api/routes/connect-info.js +6 -0
  9. package/dist/api/routes/connect-info.js.map +1 -1
  10. package/dist/api/routes/incoming.d.ts +40 -0
  11. package/dist/api/routes/incoming.d.ts.map +1 -0
  12. package/dist/api/routes/incoming.js +281 -0
  13. package/dist/api/routes/incoming.js.map +1 -0
  14. package/dist/api/routes/openapi-schemas.d.ts +337 -24
  15. package/dist/api/routes/openapi-schemas.d.ts.map +1 -1
  16. package/dist/api/routes/openapi-schemas.js +78 -0
  17. package/dist/api/routes/openapi-schemas.js.map +1 -1
  18. package/dist/api/routes/tokens.d.ts.map +1 -1
  19. package/dist/api/routes/tokens.js +1 -0
  20. package/dist/api/routes/tokens.js.map +1 -1
  21. package/dist/api/routes/wallets.d.ts +4 -0
  22. package/dist/api/routes/wallets.d.ts.map +1 -1
  23. package/dist/api/routes/wallets.js +173 -1
  24. package/dist/api/routes/wallets.js.map +1 -1
  25. package/dist/api/routes/x402.js +1 -1
  26. package/dist/api/routes/x402.js.map +1 -1
  27. package/dist/api/server.d.ts +4 -0
  28. package/dist/api/server.d.ts.map +1 -1
  29. package/dist/api/server.js +12 -0
  30. package/dist/api/server.js.map +1 -1
  31. package/dist/infrastructure/config/loader.d.ts +43 -0
  32. package/dist/infrastructure/config/loader.d.ts.map +1 -1
  33. package/dist/infrastructure/config/loader.js +13 -1
  34. package/dist/infrastructure/config/loader.js.map +1 -1
  35. package/dist/infrastructure/database/index.d.ts +1 -1
  36. package/dist/infrastructure/database/index.d.ts.map +1 -1
  37. package/dist/infrastructure/database/index.js +1 -1
  38. package/dist/infrastructure/database/index.js.map +1 -1
  39. package/dist/infrastructure/database/migrate.d.ts +2 -2
  40. package/dist/infrastructure/database/migrate.d.ts.map +1 -1
  41. package/dist/infrastructure/database/migrate.js +123 -6
  42. package/dist/infrastructure/database/migrate.js.map +1 -1
  43. package/dist/infrastructure/database/schema.d.ts +400 -1
  44. package/dist/infrastructure/database/schema.d.ts.map +1 -1
  45. package/dist/infrastructure/database/schema.js +43 -2
  46. package/dist/infrastructure/database/schema.js.map +1 -1
  47. package/dist/infrastructure/oracle/coingecko-oracle.d.ts +9 -1
  48. package/dist/infrastructure/oracle/coingecko-oracle.d.ts.map +1 -1
  49. package/dist/infrastructure/oracle/coingecko-oracle.js +40 -23
  50. package/dist/infrastructure/oracle/coingecko-oracle.js.map +1 -1
  51. package/dist/infrastructure/oracle/coingecko-platform-ids.d.ts +11 -10
  52. package/dist/infrastructure/oracle/coingecko-platform-ids.d.ts.map +1 -1
  53. package/dist/infrastructure/oracle/coingecko-platform-ids.js +20 -12
  54. package/dist/infrastructure/oracle/coingecko-platform-ids.js.map +1 -1
  55. package/dist/infrastructure/oracle/index.d.ts +1 -1
  56. package/dist/infrastructure/oracle/index.d.ts.map +1 -1
  57. package/dist/infrastructure/oracle/index.js +1 -1
  58. package/dist/infrastructure/oracle/index.js.map +1 -1
  59. package/dist/infrastructure/oracle/oracle-chain.d.ts.map +1 -1
  60. package/dist/infrastructure/oracle/oracle-chain.js +7 -4
  61. package/dist/infrastructure/oracle/oracle-chain.js.map +1 -1
  62. package/dist/infrastructure/oracle/price-cache.d.ts +24 -8
  63. package/dist/infrastructure/oracle/price-cache.d.ts.map +1 -1
  64. package/dist/infrastructure/oracle/price-cache.js +32 -11
  65. package/dist/infrastructure/oracle/price-cache.js.map +1 -1
  66. package/dist/infrastructure/oracle/pyth-feed-ids.d.ts +11 -8
  67. package/dist/infrastructure/oracle/pyth-feed-ids.d.ts.map +1 -1
  68. package/dist/infrastructure/oracle/pyth-feed-ids.js +16 -17
  69. package/dist/infrastructure/oracle/pyth-feed-ids.js.map +1 -1
  70. package/dist/infrastructure/oracle/pyth-oracle.d.ts.map +1 -1
  71. package/dist/infrastructure/oracle/pyth-oracle.js +7 -4
  72. package/dist/infrastructure/oracle/pyth-oracle.js.map +1 -1
  73. package/dist/infrastructure/settings/hot-reload.d.ts +9 -0
  74. package/dist/infrastructure/settings/hot-reload.d.ts.map +1 -1
  75. package/dist/infrastructure/settings/hot-reload.js +34 -5
  76. package/dist/infrastructure/settings/hot-reload.js.map +1 -1
  77. package/dist/infrastructure/settings/setting-keys.d.ts +2 -2
  78. package/dist/infrastructure/settings/setting-keys.d.ts.map +1 -1
  79. package/dist/infrastructure/settings/setting-keys.js +12 -3
  80. package/dist/infrastructure/settings/setting-keys.js.map +1 -1
  81. package/dist/infrastructure/token-registry/token-registry-service.d.ts +1 -0
  82. package/dist/infrastructure/token-registry/token-registry-service.d.ts.map +1 -1
  83. package/dist/infrastructure/token-registry/token-registry-service.js +15 -1
  84. package/dist/infrastructure/token-registry/token-registry-service.js.map +1 -1
  85. package/dist/lifecycle/daemon.d.ts +3 -1
  86. package/dist/lifecycle/daemon.d.ts.map +1 -1
  87. package/dist/lifecycle/daemon.js +84 -4
  88. package/dist/lifecycle/daemon.js.map +1 -1
  89. package/dist/notifications/channels/discord.d.ts.map +1 -1
  90. package/dist/notifications/channels/discord.js +21 -8
  91. package/dist/notifications/channels/discord.js.map +1 -1
  92. package/dist/notifications/channels/format-utils.d.ts +11 -0
  93. package/dist/notifications/channels/format-utils.d.ts.map +1 -0
  94. package/dist/notifications/channels/format-utils.js +19 -0
  95. package/dist/notifications/channels/format-utils.js.map +1 -0
  96. package/dist/notifications/channels/ntfy.d.ts.map +1 -1
  97. package/dist/notifications/channels/ntfy.js +18 -2
  98. package/dist/notifications/channels/ntfy.js.map +1 -1
  99. package/dist/notifications/channels/slack.d.ts.map +1 -1
  100. package/dist/notifications/channels/slack.js +20 -7
  101. package/dist/notifications/channels/slack.js.map +1 -1
  102. package/dist/notifications/channels/telegram.d.ts.map +1 -1
  103. package/dist/notifications/channels/telegram.js +21 -5
  104. package/dist/notifications/channels/telegram.js.map +1 -1
  105. package/dist/notifications/notification-service.d.ts +14 -0
  106. package/dist/notifications/notification-service.d.ts.map +1 -1
  107. package/dist/notifications/notification-service.js +89 -2
  108. package/dist/notifications/notification-service.js.map +1 -1
  109. package/dist/pipeline/database-policy-engine.d.ts +9 -5
  110. package/dist/pipeline/database-policy-engine.d.ts.map +1 -1
  111. package/dist/pipeline/database-policy-engine.js +42 -10
  112. package/dist/pipeline/database-policy-engine.js.map +1 -1
  113. package/dist/pipeline/resolve-effective-amount-usd.d.ts +1 -1
  114. package/dist/pipeline/resolve-effective-amount-usd.d.ts.map +1 -1
  115. package/dist/pipeline/resolve-effective-amount-usd.js +5 -3
  116. package/dist/pipeline/resolve-effective-amount-usd.js.map +1 -1
  117. package/dist/pipeline/stages.d.ts.map +1 -1
  118. package/dist/pipeline/stages.js +7 -1
  119. package/dist/pipeline/stages.js.map +1 -1
  120. package/dist/services/incoming/__tests__/incoming-tx-monitor-service.test.d.ts +11 -0
  121. package/dist/services/incoming/__tests__/incoming-tx-monitor-service.test.d.ts.map +1 -0
  122. package/dist/services/incoming/__tests__/incoming-tx-monitor-service.test.js +432 -0
  123. package/dist/services/incoming/__tests__/incoming-tx-monitor-service.test.js.map +1 -0
  124. package/dist/services/incoming/__tests__/incoming-tx-queue.test.d.ts +12 -0
  125. package/dist/services/incoming/__tests__/incoming-tx-queue.test.d.ts.map +1 -0
  126. package/dist/services/incoming/__tests__/incoming-tx-queue.test.js +419 -0
  127. package/dist/services/incoming/__tests__/incoming-tx-queue.test.js.map +1 -0
  128. package/dist/services/incoming/__tests__/incoming-tx-workers.test.d.ts +14 -0
  129. package/dist/services/incoming/__tests__/incoming-tx-workers.test.d.ts.map +1 -0
  130. package/dist/services/incoming/__tests__/incoming-tx-workers.test.js +452 -0
  131. package/dist/services/incoming/__tests__/incoming-tx-workers.test.js.map +1 -0
  132. package/dist/services/incoming/__tests__/integration-pitfall.test.d.ts +17 -0
  133. package/dist/services/incoming/__tests__/integration-pitfall.test.d.ts.map +1 -0
  134. package/dist/services/incoming/__tests__/integration-pitfall.test.js +653 -0
  135. package/dist/services/incoming/__tests__/integration-pitfall.test.js.map +1 -0
  136. package/dist/services/incoming/__tests__/integration-resilience.test.d.ts +14 -0
  137. package/dist/services/incoming/__tests__/integration-resilience.test.d.ts.map +1 -0
  138. package/dist/services/incoming/__tests__/integration-resilience.test.js +501 -0
  139. package/dist/services/incoming/__tests__/integration-resilience.test.js.map +1 -0
  140. package/dist/services/incoming/__tests__/integration-wiring.test.d.ts +15 -0
  141. package/dist/services/incoming/__tests__/integration-wiring.test.d.ts.map +1 -0
  142. package/dist/services/incoming/__tests__/integration-wiring.test.js +355 -0
  143. package/dist/services/incoming/__tests__/integration-wiring.test.js.map +1 -0
  144. package/dist/services/incoming/__tests__/safety-rules.test.d.ts +10 -0
  145. package/dist/services/incoming/__tests__/safety-rules.test.d.ts.map +1 -0
  146. package/dist/services/incoming/__tests__/safety-rules.test.js +165 -0
  147. package/dist/services/incoming/__tests__/safety-rules.test.js.map +1 -0
  148. package/dist/services/incoming/__tests__/subscription-multiplexer.test.d.ts +2 -0
  149. package/dist/services/incoming/__tests__/subscription-multiplexer.test.d.ts.map +1 -0
  150. package/dist/services/incoming/__tests__/subscription-multiplexer.test.js +267 -0
  151. package/dist/services/incoming/__tests__/subscription-multiplexer.test.js.map +1 -0
  152. package/dist/services/incoming/incoming-tx-monitor-service.d.ts +98 -0
  153. package/dist/services/incoming/incoming-tx-monitor-service.d.ts.map +1 -0
  154. package/dist/services/incoming/incoming-tx-monitor-service.js +357 -0
  155. package/dist/services/incoming/incoming-tx-monitor-service.js.map +1 -0
  156. package/dist/services/incoming/incoming-tx-queue.d.ts +52 -0
  157. package/dist/services/incoming/incoming-tx-queue.d.ts.map +1 -0
  158. package/dist/services/incoming/incoming-tx-queue.js +109 -0
  159. package/dist/services/incoming/incoming-tx-queue.js.map +1 -0
  160. package/dist/services/incoming/incoming-tx-workers.d.ts +89 -0
  161. package/dist/services/incoming/incoming-tx-workers.d.ts.map +1 -0
  162. package/dist/services/incoming/incoming-tx-workers.js +176 -0
  163. package/dist/services/incoming/incoming-tx-workers.js.map +1 -0
  164. package/dist/services/incoming/index.d.ts +14 -0
  165. package/dist/services/incoming/index.d.ts.map +1 -0
  166. package/dist/services/incoming/index.js +11 -0
  167. package/dist/services/incoming/index.js.map +1 -0
  168. package/dist/services/incoming/safety-rules.d.ts +70 -0
  169. package/dist/services/incoming/safety-rules.d.ts.map +1 -0
  170. package/dist/services/incoming/safety-rules.js +68 -0
  171. package/dist/services/incoming/safety-rules.js.map +1 -0
  172. package/dist/services/incoming/subscription-multiplexer.d.ts +87 -0
  173. package/dist/services/incoming/subscription-multiplexer.d.ts.map +1 -0
  174. package/dist/services/incoming/subscription-multiplexer.js +169 -0
  175. package/dist/services/incoming/subscription-multiplexer.js.map +1 -0
  176. package/dist/services/signing-sdk/approval-channel-router.d.ts +1 -1
  177. package/dist/services/signing-sdk/approval-channel-router.d.ts.map +1 -1
  178. package/dist/services/signing-sdk/approval-channel-router.js +2 -3
  179. package/dist/services/signing-sdk/approval-channel-router.js.map +1 -1
  180. package/dist/services/signing-sdk/channels/wallet-notification-channel.js +1 -1
  181. package/dist/services/signing-sdk/channels/wallet-notification-channel.js.map +1 -1
  182. package/dist/services/wc-session-service.d.ts +0 -2
  183. package/dist/services/wc-session-service.d.ts.map +1 -1
  184. package/dist/services/wc-session-service.js +2 -23
  185. package/dist/services/wc-session-service.js.map +1 -1
  186. package/dist/services/x402/x402-domain-policy.d.ts +6 -1
  187. package/dist/services/x402/x402-domain-policy.d.ts.map +1 -1
  188. package/dist/services/x402/x402-domain-policy.js +6 -2
  189. package/dist/services/x402/x402-domain-policy.js.map +1 -1
  190. package/package.json +4 -4
  191. package/public/admin/assets/index-D06O_cSo.js +1 -0
  192. package/public/admin/index.html +1 -1
  193. package/public/admin/assets/index-BLLOYSZp.js +0 -1
@@ -101,6 +101,7 @@ function buildTransactionParam(req, txType, chain) {
101
101
  toAddress: r.to,
102
102
  chain,
103
103
  tokenAddress: r.token.address,
104
+ assetId: r.token.assetId,
104
105
  };
105
106
  }
106
107
  case 'CONTRACT_CALL': {
@@ -121,6 +122,8 @@ function buildTransactionParam(req, txType, chain) {
121
122
  amount: r.amount,
122
123
  toAddress: r.spender,
123
124
  chain,
125
+ tokenAddress: r.token.address,
126
+ assetId: r.token.assetId,
124
127
  spenderAddress: r.spender,
125
128
  approveAmount: r.amount,
126
129
  };
@@ -210,7 +213,7 @@ export async function stage3Policy(ctx) {
210
213
  // [Phase 127] Oracle HTTP 호출 (evaluateAndReserve 진입 전 완료)
211
214
  let priceResult;
212
215
  if (ctx.priceOracle) {
213
- priceResult = await resolveEffectiveAmountUsd(req, txType, ctx.wallet.chain, ctx.priceOracle);
216
+ priceResult = await resolveEffectiveAmountUsd(req, txType, ctx.wallet.chain, ctx.priceOracle, ctx.resolvedNetwork);
214
217
  }
215
218
  // BATCH type uses evaluateBatch (2-stage policy evaluation)
216
219
  if (txType === 'BATCH' && ctx.policyEngine instanceof DatabasePolicyEngine) {
@@ -231,6 +234,7 @@ export async function stage3Policy(ctx) {
231
234
  chain: ctx.wallet.chain,
232
235
  network: ctx.resolvedNetwork,
233
236
  tokenAddress: 'token' in instr ? instr.token?.address : undefined,
237
+ assetId: 'token' in instr ? instr.token?.assetId : undefined,
234
238
  contractAddress: instrType === 'CONTRACT_CALL' ? ('to' in instr ? instr.to : undefined) : undefined,
235
239
  selector: 'calldata' in instr ? instr.calldata?.slice(0, 10) : undefined,
236
240
  spenderAddress: 'spender' in instr ? instr.spender : undefined,
@@ -604,6 +608,7 @@ export async function stage5Execute(ctx) {
604
608
  .where(eq(transactions.id, ctx.txId));
605
609
  // Fire-and-forget: notify TX_SUBMITTED
606
610
  void ctx.notificationService?.notify('TX_SUBMITTED', ctx.walletId, {
611
+ txId: ctx.txId,
607
612
  txHash: ctx.submitResult.txHash,
608
613
  amount: reqAmount,
609
614
  to: reqTo,
@@ -747,6 +752,7 @@ export async function stage6Confirm(ctx) {
747
752
  .where(eq(transactions.id, ctx.txId));
748
753
  // Fire-and-forget: notify TX_CONFIRMED (never blocks pipeline)
749
754
  void ctx.notificationService?.notify('TX_CONFIRMED', ctx.walletId, {
755
+ txId: ctx.txId,
750
756
  txHash: ctx.submitResult.txHash,
751
757
  amount: reqAmount,
752
758
  to: reqTo,
@@ -1 +1 @@
1
- {"version":3,"file":"stages.js","sourceRoot":"","sources":["../../src/pipeline/stages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stages.js","sourceRoot":"","sources":["../../src/pipeline/stages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Tests for IncomingTxMonitorService orchestrator.
3
+ *
4
+ * Tests lifecycle (start/stop), event emission, KillSwitch suppression,
5
+ * notification cooldown, and queue drain on stop.
6
+ *
7
+ * Uses mock dependencies (queue, multiplexer, workers, eventBus,
8
+ * killSwitch, notificationService).
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=incoming-tx-monitor-service.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incoming-tx-monitor-service.test.d.ts","sourceRoot":"","sources":["../../../../src/services/incoming/__tests__/incoming-tx-monitor-service.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,432 @@
1
+ /**
2
+ * Tests for IncomingTxMonitorService orchestrator.
3
+ *
4
+ * Tests lifecycle (start/stop), event emission, KillSwitch suppression,
5
+ * notification cooldown, and queue drain on stop.
6
+ *
7
+ * Uses mock dependencies (queue, multiplexer, workers, eventBus,
8
+ * killSwitch, notificationService).
9
+ */
10
+ import { describe, it, expect, beforeEach, vi } from 'vitest';
11
+ import { IncomingTxMonitorService } from '../incoming-tx-monitor-service.js';
12
+ // ---------------------------------------------------------------------------
13
+ // Mock generateId for queue flush
14
+ // ---------------------------------------------------------------------------
15
+ let idCounter = 0;
16
+ vi.mock('../../../infrastructure/database/id.js', () => ({
17
+ generateId: () => `uuid-${++idCounter}`,
18
+ }));
19
+ // ---------------------------------------------------------------------------
20
+ // Helpers
21
+ // ---------------------------------------------------------------------------
22
+ function makeTx(overrides = {}) {
23
+ return {
24
+ id: 'tx-001',
25
+ txHash: '0xabc',
26
+ walletId: 'wallet-001',
27
+ fromAddress: '0xsender',
28
+ amount: '1000000000',
29
+ tokenAddress: null,
30
+ chain: 'solana',
31
+ network: 'mainnet',
32
+ status: 'DETECTED',
33
+ blockNumber: 100,
34
+ detectedAt: 1700000000,
35
+ confirmedAt: null,
36
+ isSuspicious: false,
37
+ ...overrides,
38
+ };
39
+ }
40
+ function makeConfig(overrides = {}) {
41
+ return {
42
+ enabled: true,
43
+ pollIntervalSec: 30,
44
+ retentionDays: 90,
45
+ dustThresholdUsd: 0.01,
46
+ amountMultiplier: 10,
47
+ cooldownMinutes: 5,
48
+ ...overrides,
49
+ };
50
+ }
51
+ /**
52
+ * Create a mock SQLite database that supports:
53
+ * - prepare().all() for wallet loading
54
+ * - prepare().run() for updates
55
+ * - prepare().get() for single-row queries
56
+ * - transaction() for batch operations
57
+ */
58
+ function createMockSqlite() {
59
+ const runFn = vi.fn().mockReturnValue({ changes: 1 });
60
+ const getFn = vi.fn().mockReturnValue(undefined);
61
+ const allFn = vi.fn().mockReturnValue([]);
62
+ const prepareFn = vi.fn().mockReturnValue({
63
+ run: runFn,
64
+ get: getFn,
65
+ all: allFn,
66
+ });
67
+ const txFn = vi.fn((fn) => fn);
68
+ return {
69
+ prepare: prepareFn,
70
+ transaction: txFn,
71
+ exec: vi.fn(),
72
+ _runFn: runFn,
73
+ _getFn: getFn,
74
+ _allFn: allFn,
75
+ _prepareFn: prepareFn,
76
+ };
77
+ }
78
+ function createMockEventBus() {
79
+ return {
80
+ emit: vi.fn().mockReturnValue(true),
81
+ on: vi.fn(),
82
+ removeAllListeners: vi.fn(),
83
+ listenerCount: vi.fn().mockReturnValue(0),
84
+ };
85
+ }
86
+ function createMockWorkers() {
87
+ return {
88
+ register: vi.fn(),
89
+ startAll: vi.fn(),
90
+ stopAll: vi.fn(),
91
+ size: 0,
92
+ isRunning: vi.fn().mockReturnValue(false),
93
+ };
94
+ }
95
+ function createMockKillSwitch(state = 'ACTIVE') {
96
+ return {
97
+ getState: vi.fn().mockReturnValue({
98
+ state,
99
+ activatedAt: null,
100
+ activatedBy: null,
101
+ }),
102
+ ensureInitialized: vi.fn(),
103
+ };
104
+ }
105
+ function createMockNotificationService() {
106
+ return {
107
+ notify: vi.fn(),
108
+ addChannel: vi.fn(),
109
+ replaceChannels: vi.fn(),
110
+ getChannelNames: vi.fn().mockReturnValue([]),
111
+ updateConfig: vi.fn(),
112
+ setWalletNotificationChannel: vi.fn(),
113
+ };
114
+ }
115
+ function createMockSubscriberFactory() {
116
+ return vi.fn().mockReturnValue({
117
+ connect: vi.fn().mockResolvedValue(undefined),
118
+ waitForDisconnect: vi.fn().mockReturnValue(new Promise(() => { })),
119
+ subscribe: vi.fn().mockResolvedValue(undefined),
120
+ unsubscribe: vi.fn().mockResolvedValue(undefined),
121
+ pollAll: vi.fn().mockResolvedValue(undefined),
122
+ destroy: vi.fn().mockResolvedValue(undefined),
123
+ });
124
+ }
125
+ // ---------------------------------------------------------------------------
126
+ // Tests
127
+ // ---------------------------------------------------------------------------
128
+ describe('IncomingTxMonitorService', () => {
129
+ let sqlite;
130
+ let eventBus;
131
+ let workers;
132
+ let killSwitch;
133
+ let notificationService;
134
+ let subscriberFactory;
135
+ beforeEach(() => {
136
+ vi.clearAllMocks();
137
+ idCounter = 0;
138
+ sqlite = createMockSqlite();
139
+ eventBus = createMockEventBus();
140
+ workers = createMockWorkers();
141
+ killSwitch = createMockKillSwitch('ACTIVE');
142
+ notificationService = createMockNotificationService();
143
+ subscriberFactory = createMockSubscriberFactory();
144
+ });
145
+ function createService(configOverrides = {}) {
146
+ return new IncomingTxMonitorService({
147
+ sqlite: sqlite,
148
+ db: {},
149
+ workers: workers,
150
+ eventBus: eventBus,
151
+ killSwitchService: killSwitch,
152
+ notificationService: notificationService,
153
+ subscriberFactory,
154
+ config: makeConfig(configOverrides),
155
+ });
156
+ }
157
+ // ── Lifecycle ──────────────────────────────────────────────────
158
+ describe('start()', () => {
159
+ it('loads wallets from DB and adds to multiplexer', async () => {
160
+ const walletRows = [
161
+ { id: 'w1', chain: 'solana', network: 'mainnet', public_key: 'pubkey1' },
162
+ { id: 'w2', chain: 'ethereum', network: 'sepolia', public_key: 'pubkey2' },
163
+ ];
164
+ // Make the wallet query return our test wallets
165
+ sqlite._allFn.mockReturnValueOnce(walletRows);
166
+ const service = createService();
167
+ await service.start();
168
+ // Verify wallet query was executed
169
+ expect(sqlite.prepare).toHaveBeenCalledWith(expect.stringContaining('monitor_incoming = 1'));
170
+ // Verify subscriber factory was called for both chain:network pairs
171
+ expect(subscriberFactory).toHaveBeenCalledTimes(2);
172
+ expect(subscriberFactory).toHaveBeenCalledWith('solana', 'mainnet');
173
+ expect(subscriberFactory).toHaveBeenCalledWith('ethereum', 'sepolia');
174
+ });
175
+ it('registers 6 background workers', async () => {
176
+ sqlite._allFn.mockReturnValueOnce([]);
177
+ const service = createService();
178
+ await service.start();
179
+ expect(workers.register).toHaveBeenCalledTimes(6);
180
+ const registeredNames = workers.register.mock.calls.map((call) => call[0]);
181
+ expect(registeredNames).toContain('incoming-tx-flush');
182
+ expect(registeredNames).toContain('incoming-tx-retention');
183
+ expect(registeredNames).toContain('incoming-tx-confirm-solana');
184
+ expect(registeredNames).toContain('incoming-tx-confirm-evm');
185
+ expect(registeredNames).toContain('incoming-tx-poll-solana');
186
+ expect(registeredNames).toContain('incoming-tx-poll-evm');
187
+ });
188
+ it('handles wallet subscription failure gracefully (per-wallet isolation)', async () => {
189
+ const walletRows = [
190
+ { id: 'w1', chain: 'solana', network: 'mainnet', public_key: 'pubkey1' },
191
+ ];
192
+ sqlite._allFn.mockReturnValueOnce(walletRows);
193
+ // Make subscriber factory throw for this wallet
194
+ subscriberFactory.mockRejectedValueOnce(new Error('RPC unavailable'));
195
+ const service = createService();
196
+ // Should not throw -- per-wallet error isolation
197
+ await expect(service.start()).resolves.toBeUndefined();
198
+ });
199
+ });
200
+ describe('stop()', () => {
201
+ it('drains queue before stopping multiplexer', async () => {
202
+ sqlite._allFn.mockReturnValueOnce([]);
203
+ const service = createService();
204
+ await service.start();
205
+ // Push a transaction into the queue via the onTransaction callback
206
+ // We need to access the internal queue -- use the flush handler instead
207
+ // For this test, just verify stop() completes without error
208
+ await service.stop();
209
+ // The drain should have been called (queue is empty, so it's a no-op)
210
+ // The multiplexer stopAll should have been called
211
+ // We verify by checking no errors thrown
212
+ });
213
+ it('clears notification cooldown on stop', async () => {
214
+ sqlite._allFn.mockReturnValueOnce([]);
215
+ const service = createService();
216
+ await service.start();
217
+ await service.stop();
218
+ // Internal state is cleared -- no way to directly test Map,
219
+ // but subsequent start should have fresh cooldowns
220
+ });
221
+ });
222
+ // ── Event emission ─────────────────────────────────────────────
223
+ describe('flush handler event emission', () => {
224
+ it('emits transaction:incoming for each inserted tx', async () => {
225
+ sqlite._allFn.mockReturnValueOnce([]);
226
+ const service = createService();
227
+ await service.start();
228
+ // Get the flush handler from workers.register calls
229
+ const flushCall = workers.register.mock.calls.find((call) => call[0] === 'incoming-tx-flush');
230
+ expect(flushCall).toBeDefined();
231
+ const flushHandler = flushCall[1].handler;
232
+ // Mock queue.flush to return transactions
233
+ const tx = makeTx({ id: 'tx-001' });
234
+ // We need to push into the real queue and mock SQLite for flush
235
+ // Instead, let's mock the internal queue's flush method
236
+ const internalQueue = service.queue;
237
+ internalQueue.flush = vi.fn().mockReturnValue([tx]);
238
+ await flushHandler();
239
+ expect(eventBus.emit).toHaveBeenCalledWith('transaction:incoming', expect.objectContaining({
240
+ walletId: 'wallet-001',
241
+ txHash: '0xabc',
242
+ timestamp: 1700000000,
243
+ }));
244
+ });
245
+ it('emits transaction:incoming:suspicious for flagged transactions', async () => {
246
+ sqlite._allFn.mockReturnValueOnce([]);
247
+ const service = createService();
248
+ await service.start();
249
+ const flushCall = workers.register.mock.calls.find((call) => call[0] === 'incoming-tx-flush');
250
+ const flushHandler = flushCall[1].handler;
251
+ // Create a tx with unknown token (will be flagged by UnknownTokenRule)
252
+ const tx = makeTx({ id: 'tx-002', tokenAddress: '0xunknown' });
253
+ // Mock the internal queue flush
254
+ const internalQueue = service.queue;
255
+ internalQueue.flush = vi.fn().mockReturnValue([tx]);
256
+ // Mock token_registry query to return no result (unregistered token)
257
+ sqlite._getFn.mockReturnValue(undefined);
258
+ await flushHandler();
259
+ // Should emit both events
260
+ expect(eventBus.emit).toHaveBeenCalledWith('transaction:incoming', expect.objectContaining({ txHash: '0xabc' }));
261
+ expect(eventBus.emit).toHaveBeenCalledWith('transaction:incoming:suspicious', expect.objectContaining({
262
+ txHash: '0xabc',
263
+ suspiciousReasons: expect.arrayContaining(['unknownToken']),
264
+ }));
265
+ });
266
+ });
267
+ // ── KillSwitch suppression ─────────────────────────────────────
268
+ describe('KillSwitch notification suppression', () => {
269
+ it('sends notifications when KillSwitch is ACTIVE', async () => {
270
+ sqlite._allFn.mockReturnValueOnce([]);
271
+ killSwitch = createMockKillSwitch('ACTIVE');
272
+ const service = new IncomingTxMonitorService({
273
+ sqlite: sqlite,
274
+ db: {},
275
+ workers: workers,
276
+ eventBus: eventBus,
277
+ killSwitchService: killSwitch,
278
+ notificationService: notificationService,
279
+ subscriberFactory,
280
+ config: makeConfig(),
281
+ });
282
+ await service.start();
283
+ const flushCall = workers.register.mock.calls.find((call) => call[0] === 'incoming-tx-flush');
284
+ const flushHandler = flushCall[1].handler;
285
+ const tx = makeTx();
286
+ service.queue.flush = vi.fn().mockReturnValue([tx]);
287
+ await flushHandler();
288
+ expect(notificationService.notify).toHaveBeenCalled();
289
+ });
290
+ it('suppresses notifications when KillSwitch is SUSPENDED', async () => {
291
+ sqlite._allFn.mockReturnValueOnce([]);
292
+ killSwitch = createMockKillSwitch('SUSPENDED');
293
+ const service = new IncomingTxMonitorService({
294
+ sqlite: sqlite,
295
+ db: {},
296
+ workers: workers,
297
+ eventBus: eventBus,
298
+ killSwitchService: killSwitch,
299
+ notificationService: notificationService,
300
+ subscriberFactory,
301
+ config: makeConfig(),
302
+ });
303
+ await service.start();
304
+ const flushCall = workers.register.mock.calls.find((call) => call[0] === 'incoming-tx-flush');
305
+ const flushHandler = flushCall[1].handler;
306
+ const tx = makeTx();
307
+ service.queue.flush = vi.fn().mockReturnValue([tx]);
308
+ await flushHandler();
309
+ // Events should still be emitted
310
+ expect(eventBus.emit).toHaveBeenCalledWith('transaction:incoming', expect.anything());
311
+ // But notifications should NOT be sent
312
+ expect(notificationService.notify).not.toHaveBeenCalled();
313
+ });
314
+ it('suppresses notifications when KillSwitch is LOCKED', async () => {
315
+ sqlite._allFn.mockReturnValueOnce([]);
316
+ killSwitch = createMockKillSwitch('LOCKED');
317
+ const service = new IncomingTxMonitorService({
318
+ sqlite: sqlite,
319
+ db: {},
320
+ workers: workers,
321
+ eventBus: eventBus,
322
+ killSwitchService: killSwitch,
323
+ notificationService: notificationService,
324
+ subscriberFactory,
325
+ config: makeConfig(),
326
+ });
327
+ await service.start();
328
+ const flushCall = workers.register.mock.calls.find((call) => call[0] === 'incoming-tx-flush');
329
+ const flushHandler = flushCall[1].handler;
330
+ const tx = makeTx();
331
+ service.queue.flush = vi.fn().mockReturnValue([tx]);
332
+ await flushHandler();
333
+ // Events still emitted
334
+ expect(eventBus.emit).toHaveBeenCalled();
335
+ // Notifications NOT sent
336
+ expect(notificationService.notify).not.toHaveBeenCalled();
337
+ });
338
+ it('always writes DB records regardless of KillSwitch state', async () => {
339
+ sqlite._allFn.mockReturnValueOnce([]);
340
+ killSwitch = createMockKillSwitch('LOCKED');
341
+ const service = new IncomingTxMonitorService({
342
+ sqlite: sqlite,
343
+ db: {},
344
+ workers: workers,
345
+ eventBus: eventBus,
346
+ killSwitchService: killSwitch,
347
+ notificationService: notificationService,
348
+ subscriberFactory,
349
+ config: makeConfig(),
350
+ });
351
+ await service.start();
352
+ const flushCall = workers.register.mock.calls.find((call) => call[0] === 'incoming-tx-flush');
353
+ const flushHandler = flushCall[1].handler;
354
+ // Suspicious tx (unknown token)
355
+ const tx = makeTx({ tokenAddress: '0xunknown' });
356
+ service.queue.flush = vi.fn().mockReturnValue([tx]);
357
+ sqlite._getFn.mockReturnValue(undefined);
358
+ await flushHandler();
359
+ // DB update for is_suspicious should still happen
360
+ expect(sqlite.prepare).toHaveBeenCalledWith(expect.stringContaining('UPDATE incoming_transactions SET is_suspicious = 1'));
361
+ });
362
+ });
363
+ // ── Notification cooldown ──────────────────────────────────────
364
+ describe('notification cooldown', () => {
365
+ it('suppresses second notification within cooldown window', async () => {
366
+ sqlite._allFn.mockReturnValueOnce([]);
367
+ const service = createService({ cooldownMinutes: 5 });
368
+ await service.start();
369
+ const flushCall = workers.register.mock.calls.find((call) => call[0] === 'incoming-tx-flush');
370
+ const flushHandler = flushCall[1].handler;
371
+ const tx1 = makeTx({ id: 'tx-001', txHash: '0xabc1' });
372
+ const tx2 = makeTx({ id: 'tx-002', txHash: '0xabc2' });
373
+ // First flush: one tx
374
+ service.queue.flush = vi.fn().mockReturnValue([tx1]);
375
+ await flushHandler();
376
+ expect(notificationService.notify).toHaveBeenCalledTimes(1);
377
+ // Second flush: another tx for same wallet + event type within cooldown
378
+ service.queue.flush = vi.fn().mockReturnValue([tx2]);
379
+ await flushHandler();
380
+ // Still only 1 notification (second suppressed by cooldown)
381
+ expect(notificationService.notify).toHaveBeenCalledTimes(1);
382
+ });
383
+ it('allows notification after cooldown expires', async () => {
384
+ sqlite._allFn.mockReturnValueOnce([]);
385
+ const service = createService({ cooldownMinutes: 5 });
386
+ await service.start();
387
+ const flushCall = workers.register.mock.calls.find((call) => call[0] === 'incoming-tx-flush');
388
+ const flushHandler = flushCall[1].handler;
389
+ const tx1 = makeTx({ id: 'tx-001', txHash: '0xabc1' });
390
+ service.queue.flush = vi.fn().mockReturnValue([tx1]);
391
+ await flushHandler();
392
+ expect(notificationService.notify).toHaveBeenCalledTimes(1);
393
+ // Simulate cooldown expiry by directly setting the cooldown map
394
+ const cooldownMap = service.notifyCooldown;
395
+ // Set last notified to 6 minutes ago (past the 5-minute cooldown)
396
+ cooldownMap.set('wallet-001:TX_INCOMING', Math.floor(Date.now() / 1000) - 360);
397
+ const tx2 = makeTx({ id: 'tx-002', txHash: '0xabc2' });
398
+ service.queue.flush = vi.fn().mockReturnValue([tx2]);
399
+ await flushHandler();
400
+ // Should now have 2 notifications
401
+ expect(notificationService.notify).toHaveBeenCalledTimes(2);
402
+ });
403
+ });
404
+ // ── updateConfig ───────────────────────────────────────────────
405
+ describe('updateConfig()', () => {
406
+ it('merges partial config', () => {
407
+ const service = createService({ pollIntervalSec: 30 });
408
+ service.updateConfig({ pollIntervalSec: 60, dustThresholdUsd: 0.05 });
409
+ const config = service.config;
410
+ expect(config.pollIntervalSec).toBe(60);
411
+ expect(config.dustThresholdUsd).toBe(0.05);
412
+ // Unchanged values preserved
413
+ expect(config.retentionDays).toBe(90);
414
+ });
415
+ });
416
+ // ── Flush handler with cursor update ───────────────────────────
417
+ describe('flush handler cursor update', () => {
418
+ it('calls updateCursor after processing each tx', async () => {
419
+ sqlite._allFn.mockReturnValueOnce([]);
420
+ const service = createService();
421
+ await service.start();
422
+ const flushCall = workers.register.mock.calls.find((call) => call[0] === 'incoming-tx-flush');
423
+ const flushHandler = flushCall[1].handler;
424
+ const tx = makeTx({ blockNumber: 12345 });
425
+ service.queue.flush = vi.fn().mockReturnValue([tx]);
426
+ await flushHandler();
427
+ // Verify cursor update was called (INSERT OR REPLACE into incoming_tx_cursors)
428
+ expect(sqlite.prepare).toHaveBeenCalledWith(expect.stringContaining('incoming_tx_cursors'));
429
+ });
430
+ });
431
+ });
432
+ //# sourceMappingURL=incoming-tx-monitor-service.test.js.map