dexbot 1.3.2 → 1.3.3

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 (71) hide show
  1. package/dist/credential-daemon.d.ts.map +1 -1
  2. package/dist/credential-daemon.js +53 -13
  3. package/dist/credential-daemon.js.map +1 -1
  4. package/dist/modules/bitshares-native/serial/types.js +1 -1
  5. package/dist/modules/bitshares-native/serial/types.js.map +1 -1
  6. package/dist/modules/chain_keys.js +1 -1
  7. package/dist/modules/chain_keys.js.map +1 -1
  8. package/dist/modules/constants.d.ts +2 -0
  9. package/dist/modules/constants.d.ts.map +1 -1
  10. package/dist/modules/constants.js +10 -0
  11. package/dist/modules/constants.js.map +1 -1
  12. package/dist/modules/credential_policy.js +1 -1
  13. package/dist/modules/credential_policy.js.map +1 -1
  14. package/dist/modules/dexbot_class.d.ts +45 -175
  15. package/dist/modules/dexbot_class.d.ts.map +1 -1
  16. package/dist/modules/dexbot_class.js +84 -3496
  17. package/dist/modules/dexbot_class.js.map +1 -1
  18. package/dist/modules/dexbot_cow_runtime.d.ts +319 -0
  19. package/dist/modules/dexbot_cow_runtime.d.ts.map +1 -0
  20. package/dist/modules/dexbot_cow_runtime.js +1764 -0
  21. package/dist/modules/dexbot_cow_runtime.js.map +1 -0
  22. package/dist/modules/dexbot_fill_runtime.d.ts +47 -0
  23. package/dist/modules/dexbot_fill_runtime.d.ts.map +1 -1
  24. package/dist/modules/dexbot_fill_runtime.js +607 -3
  25. package/dist/modules/dexbot_fill_runtime.js.map +1 -1
  26. package/dist/modules/dexbot_maintenance_runtime.d.ts +69 -0
  27. package/dist/modules/dexbot_maintenance_runtime.d.ts.map +1 -1
  28. package/dist/modules/dexbot_maintenance_runtime.js +244 -15
  29. package/dist/modules/dexbot_maintenance_runtime.js.map +1 -1
  30. package/dist/modules/dexbot_startup_runtime.d.ts +30 -0
  31. package/dist/modules/dexbot_startup_runtime.d.ts.map +1 -0
  32. package/dist/modules/dexbot_startup_runtime.js +539 -0
  33. package/dist/modules/dexbot_startup_runtime.js.map +1 -0
  34. package/dist/modules/dexbot_state_recovery.d.ts +128 -0
  35. package/dist/modules/dexbot_state_recovery.d.ts.map +1 -0
  36. package/dist/modules/dexbot_state_recovery.js +397 -0
  37. package/dist/modules/dexbot_state_recovery.js.map +1 -0
  38. package/dist/modules/fund_registry.d.ts.map +1 -1
  39. package/dist/modules/fund_registry.js +0 -1
  40. package/dist/modules/fund_registry.js.map +1 -1
  41. package/dist/modules/general_settings.d.ts.map +1 -1
  42. package/dist/modules/general_settings.js +0 -1
  43. package/dist/modules/general_settings.js.map +1 -1
  44. package/dist/modules/key_store.d.ts.map +1 -1
  45. package/dist/modules/key_store.js +1 -2
  46. package/dist/modules/key_store.js.map +1 -1
  47. package/dist/modules/launcher/market_adapter_runtime.d.ts.map +1 -1
  48. package/dist/modules/launcher/market_adapter_runtime.js +0 -1
  49. package/dist/modules/launcher/market_adapter_runtime.js.map +1 -1
  50. package/dist/modules/launcher/market_adapter_watchdog.d.ts.map +1 -1
  51. package/dist/modules/launcher/market_adapter_watchdog.js +1 -2
  52. package/dist/modules/launcher/market_adapter_watchdog.js.map +1 -1
  53. package/dist/modules/order/grid_reconcile.d.ts.map +1 -1
  54. package/dist/modules/order/grid_reconcile.js +0 -1
  55. package/dist/modules/order/grid_reconcile.js.map +1 -1
  56. package/dist/modules/order/grid_reconcile_internal.js +2 -2
  57. package/dist/modules/order/grid_reconcile_internal.js.map +1 -1
  58. package/dist/modules/order/utils/math.js +1 -1
  59. package/dist/modules/order/utils/math.js.map +1 -1
  60. package/dist/modules/order/utils/system.js +1 -1
  61. package/dist/modules/order/utils/system.js.map +1 -1
  62. package/dist/modules/order/utils/validate.d.ts.map +1 -1
  63. package/dist/modules/order/utils/validate.js +0 -1
  64. package/dist/modules/order/utils/validate.js.map +1 -1
  65. package/dist/modules/paths.d.ts +2 -0
  66. package/dist/modules/paths.d.ts.map +1 -1
  67. package/dist/modules/paths.js +13 -2
  68. package/dist/modules/paths.js.map +1 -1
  69. package/dist/scripts/verify-browser-bundle.js +25 -1
  70. package/dist/scripts/verify-browser-bundle.js.map +1 -1
  71. package/package.json +7 -2
@@ -0,0 +1,319 @@
1
+ /**
2
+ * modules/dexbot_cow_runtime.ts - COW (Copy-on-Write) Batch Execution Runtime
3
+ *
4
+ * Handles on-chain order execution with Copy-on-Write working grid semantics,
5
+ * broadcast uncertainty recovery, and result processing.
6
+ *
7
+ * Each function takes the DEXBot instance as its first parameter, following
8
+ * the same pattern as dexbot_fill_runtime.ts.
9
+ */
10
+ /**
11
+ * Group orders into outside-in pairs for atomic create execution.
12
+ * @param {Array} orders
13
+ * @returns {Array<Array>}
14
+ */
15
+ declare function buildOutsideInPairGroupsForOrders(orders: any): any;
16
+ /**
17
+ * Build outside-in pair groups for create entry contexts.
18
+ * @param {Array} createEntries
19
+ * @returns {Array<Array>}
20
+ */
21
+ declare function buildOutsideInPairGroupsForCreateEntries(createEntries: any): any;
22
+ /**
23
+ * Extract operation results from a batch transaction result.
24
+ * @param {Object|Array|null} result
25
+ * @param {string} [warnContext='']
26
+ * @param {Function} [logFn] - Optional logger function, called with (msg, level) on unrecognized shape
27
+ * @returns {Array}
28
+ */
29
+ declare function extractOperationResults(result: any, warnContext?: string, logFn?: any): any[];
30
+ /**
31
+ * Find CREATE operation contexts whose broadcast result did not include a chain order id.
32
+ * @param {Array} operationResults
33
+ * @param {Array} opContexts
34
+ * @returns {Array<{index:number, ctx:Object}>}
35
+ */
36
+ declare function findMissingCreateResultContexts(operationResults: any, opContexts: any): any[];
37
+ /**
38
+ * Run an immediate chain sync after a successful CREATE broadcast returned incomplete ids.
39
+ * @param {import('./dexbot_class').DEXBot} bot
40
+ * @param {string} [reason]
41
+ * @returns {Promise<void>}
42
+ */
43
+ declare function recoverAfterMissingCreateResults(bot: any, reason?: string): Promise<void>;
44
+ /**
45
+ * Restore unresolved missing-create blockers after recovery if sync did not adopt them.
46
+ * @param {import('./dexbot_class').DEXBot} bot
47
+ * @param {Array} blockers
48
+ * @param {Object} recoveryResult
49
+ */
50
+ declare function preserveMissingCreateBlockersAfterRecovery(bot: any, blockers: any, recoveryResult: any): void;
51
+ /**
52
+ * Merge missing CREATE result contexts into manager._lastUnmatchedChainOrders.
53
+ * @param {import('./dexbot_class').DEXBot} bot
54
+ * @param {Array<{index:number, ctx:Object}>} missingCreateResults
55
+ */
56
+ declare function markMissingCreateResultsAsStructuralBlocker(bot: any, missingCreateResults: any): void;
57
+ /**
58
+ * Format an unmatched chain order for COW logs.
59
+ * @param {Object} order
60
+ * @returns {string}
61
+ */
62
+ declare function formatUnmatchedChainOrderForLog(order: any): any;
63
+ /**
64
+ * Record a pending CREATE broadcast on the manager.
65
+ * @param {import('./dexbot_class').DEXBot} bot
66
+ * @param {Object} entry
67
+ */
68
+ declare function recordPendingBroadcast(bot: any, entry: any): void;
69
+ /**
70
+ * Clear the pending-broadcast cache.
71
+ * @param {Map} pendingBroadcasts
72
+ */
73
+ declare function clearPendingBroadcasts(pendingBroadcasts: any): void;
74
+ /**
75
+ * Build a fingerprint for an on-chain order so it can be matched against
76
+ * the pending-broadcast cache.
77
+ * @param {import('./dexbot_class').DEXBot} bot
78
+ * @param {Object} chainOrder
79
+ * @param {string} slotId
80
+ * @returns {string|null}
81
+ */
82
+ declare function buildChainOrderFingerprint(bot: any, chainOrder: any, slotId: any): any;
83
+ /**
84
+ * Normalize raw BitShares limit_order_object data into the integer tuple
85
+ * used by pending-broadcast recovery.
86
+ * @param {import('./dexbot_class').DEXBot} bot
87
+ * @param {Object} chainOrder
88
+ * @returns {{side: string, assetA: string, assetB: string, sellInt: number, receiveInt: number}|null}
89
+ */
90
+ declare function normalizeChainOrderForPendingMatch(bot: any, chainOrder: any): {
91
+ side: any;
92
+ assetA: any;
93
+ assetB: any;
94
+ sellInt: number;
95
+ receiveInt: number;
96
+ };
97
+ /**
98
+ * Find a chain order that matches a planned slot using price+size proximity.
99
+ * @param {import('./dexbot_class').DEXBot} bot
100
+ * @param {Array} chainOrders - Open chain orders for the account
101
+ * @param {string} slotId - Planned grid slot id
102
+ * @param {Object} planned - { sell, receive, orderType } integers from the planned op
103
+ * @returns {Object|null} Matching chain order, or null
104
+ */
105
+ declare function findChainOrderForSlot(bot: any, chainOrders: any, slotId: any, planned: any): any;
106
+ /**
107
+ * Reconcile a broadcast whose chain state is unknown.
108
+ * Thin wrapper that optionally acquires _fillProcessingLock before delegating.
109
+ * @param {import('./dexbot_class').DEXBot} bot
110
+ * @param {BroadcastUncertainError} err
111
+ * @param {Array<Object>} opContexts
112
+ * @param {Object} [options]
113
+ * @returns {Promise<Object>}
114
+ */
115
+ declare function reconcileAfterUncertainBroadcast(bot: any, err: any, opContexts: any, options?: Record<string, any>): Promise<any>;
116
+ /**
117
+ * Reconcile a broadcast whose chain state is unknown (implementation).
118
+ * @param {import('./dexbot_class').DEXBot} bot
119
+ * @param {BroadcastUncertainError} err
120
+ * @param {Array<Object>} opContexts
121
+ * @param {Object} options
122
+ * @returns {Promise<Object>}
123
+ */
124
+ declare function reconcileAfterUncertainBroadcastImpl(bot: any, err: any, opContexts: any, options: any): Promise<{
125
+ executed: boolean;
126
+ hadRotation: boolean;
127
+ uncertain: boolean;
128
+ adoptedCount?: undefined;
129
+ discardedCount?: undefined;
130
+ } | {
131
+ executed: boolean;
132
+ hadRotation: boolean;
133
+ uncertain: boolean;
134
+ adoptedCount: number;
135
+ discardedCount: number;
136
+ }>;
137
+ /**
138
+ * Auto-cancel one unmatched orphan (price-drift orphan) per cycle.
139
+ * @param {import('./dexbot_class').DEXBot} bot
140
+ * @returns {Promise<{cancelled: boolean, reason?: string, orderId?: string}>}
141
+ */
142
+ declare function autoCancelOneUnmatchedOrphan(bot: any): Promise<{
143
+ cancelled: boolean;
144
+ reason: string;
145
+ subCount: any;
146
+ message?: undefined;
147
+ orderId?: undefined;
148
+ error?: undefined;
149
+ } | {
150
+ cancelled: boolean;
151
+ reason: string;
152
+ subCount?: undefined;
153
+ message?: undefined;
154
+ orderId?: undefined;
155
+ error?: undefined;
156
+ } | {
157
+ cancelled: boolean;
158
+ reason: string;
159
+ message: string;
160
+ subCount?: undefined;
161
+ orderId?: undefined;
162
+ error?: undefined;
163
+ } | {
164
+ cancelled: boolean;
165
+ orderId: any;
166
+ reason?: undefined;
167
+ subCount?: undefined;
168
+ message?: undefined;
169
+ error?: undefined;
170
+ } | {
171
+ cancelled: boolean;
172
+ reason: string;
173
+ error: any;
174
+ subCount?: undefined;
175
+ message?: undefined;
176
+ orderId?: undefined;
177
+ }>;
178
+ /**
179
+ * Check whether to execute creates in outside-in pair mode.
180
+ * @param {import('./dexbot_class').DEXBot} bot
181
+ * @param {Array} opContexts
182
+ * @returns {boolean}
183
+ */
184
+ declare function shouldExecuteCreatePairMode(bot: any, opContexts: any): boolean;
185
+ /**
186
+ * Execute operations with retry on BroadcastUncertainError.
187
+ * @param {import('./dexbot_class').DEXBot} bot
188
+ * @param {Array} operations
189
+ * @param {Array} opContexts
190
+ * @returns {Promise<{result: Object, opContexts: Array}>}
191
+ */
192
+ declare function executeWithRetryOnUncertain(bot: any, operations: any, opContexts: any): Promise<{
193
+ result: any;
194
+ opContexts: any;
195
+ }>;
196
+ /**
197
+ * Execute blockchain operations with appropriate strategy (single batch or pair mode).
198
+ * @param {import('./dexbot_class').DEXBot} bot
199
+ * @param {Array} operations
200
+ * @param {Array} opContexts
201
+ * @returns {Promise<{result: Object, opContexts: Array}>}
202
+ */
203
+ declare function executeOperationsWithStrategy(bot: any, operations: any, opContexts: any): Promise<{
204
+ result: any;
205
+ opContexts: any;
206
+ }>;
207
+ /**
208
+ * Validate that operations can be executed with available funds before broadcasting.
209
+ * @param {import('./dexbot_class').DEXBot} bot
210
+ * @param {Array} operations
211
+ * @param {Object} assetA
212
+ * @param {Object} assetB
213
+ * @returns {Object} { isValid: boolean, summary: string }
214
+ */
215
+ declare function validateOperationFunds(bot: any, operations: any, assetA: any, assetB: any): {
216
+ isValid: boolean;
217
+ summary: string;
218
+ violations?: undefined;
219
+ } | {
220
+ isValid: boolean;
221
+ summary: string;
222
+ violations: any[];
223
+ };
224
+ /**
225
+ * Resolve the ideal size from an order-like object with fallback.
226
+ * @param {import('./dexbot_class').DEXBot} bot
227
+ * @param {Object|null} orderLike
228
+ * @param {number|null} [fallbackSize=null]
229
+ * @returns {number|null}
230
+ */
231
+ declare function resolveIdealSizeForValidation(bot: any, orderLike: any, fallbackSize?: any): number;
232
+ /**
233
+ * Validate that an order size is safe to execute.
234
+ * @param {import('./dexbot_class').DEXBot} bot
235
+ * @param {number} size
236
+ * @param {string} type
237
+ * @param {Object|null} [orderLike=null]
238
+ * @param {number|null} [fallbackSize=null]
239
+ * @returns {import('./types').OrderValidationResult}
240
+ */
241
+ declare function validateOrderSizeForExecution(bot: any, size: any, type: any, orderLike?: any, fallbackSize?: any): any;
242
+ /**
243
+ * Build COW actions array from a simple plan object.
244
+ * @param {import('./dexbot_class').DEXBot} bot
245
+ * @param {Object|Array} plan
246
+ * @returns {Array}
247
+ */
248
+ declare function buildActionsFromPlan(bot: any, plan: any): any[];
249
+ /**
250
+ * Build a COW result object (workingGrid + actions) from a simple plan.
251
+ * @param {import('./dexbot_class').DEXBot} bot
252
+ * @param {Object|Array} plan
253
+ * @returns {{workingGrid: import('./types').WorkingGrid, workingIndexes: Object, workingBoundary: number, actions: Array}}
254
+ */
255
+ declare function buildCowResultFromPlan(bot: any, plan: any): {
256
+ workingGrid: any;
257
+ workingIndexes: any;
258
+ workingBoundary: any;
259
+ actions: any[];
260
+ };
261
+ /**
262
+ * Restore skipped update slots in the working grid to master state.
263
+ * @param {import('./dexbot_class').DEXBot} bot
264
+ * @param {import('./types').WorkingGrid} workingGrid
265
+ * @param {Set<string>} skippedSlotIds
266
+ * @param {number} [skippedCount=0]
267
+ */
268
+ declare function restoreSkippedUpdateSlotsInWorkingGrid(bot: any, workingGrid: any, skippedSlotIds: any, skippedCount?: number): void;
269
+ /**
270
+ * COW broadcast: Execute blockchain operations and commit working grid on success.
271
+ * @param {import('./dexbot_class').DEXBot} bot
272
+ * @param {Object} cowResult
273
+ * @returns {Promise<Object>}
274
+ */
275
+ declare function updateOrdersOnChainBatchCOW(bot: any, cowResult: any): Promise<any>;
276
+ /**
277
+ * Process results from batch transaction execution.
278
+ * Updates order state, synchronizes with chain, and deducts BTS fees.
279
+ * @param {import('./dexbot_class').DEXBot} bot
280
+ * @param {Object} result
281
+ * @param {Array} opContexts
282
+ * @returns {Object} Result with { executed: boolean, hadRotation: boolean }
283
+ */
284
+ declare function processBatchResults(bot: any, result: any, opContexts: any): Promise<{
285
+ executed: boolean;
286
+ hadRotation: boolean;
287
+ updateOperationCount: number;
288
+ }>;
289
+ declare const _default: {
290
+ buildOutsideInPairGroupsForOrders: typeof buildOutsideInPairGroupsForOrders;
291
+ buildOutsideInPairGroupsForCreateEntries: typeof buildOutsideInPairGroupsForCreateEntries;
292
+ extractOperationResults: typeof extractOperationResults;
293
+ findMissingCreateResultContexts: typeof findMissingCreateResultContexts;
294
+ recoverAfterMissingCreateResults: typeof recoverAfterMissingCreateResults;
295
+ preserveMissingCreateBlockersAfterRecovery: typeof preserveMissingCreateBlockersAfterRecovery;
296
+ markMissingCreateResultsAsStructuralBlocker: typeof markMissingCreateResultsAsStructuralBlocker;
297
+ formatUnmatchedChainOrderForLog: typeof formatUnmatchedChainOrderForLog;
298
+ recordPendingBroadcast: typeof recordPendingBroadcast;
299
+ clearPendingBroadcasts: typeof clearPendingBroadcasts;
300
+ buildChainOrderFingerprint: typeof buildChainOrderFingerprint;
301
+ normalizeChainOrderForPendingMatch: typeof normalizeChainOrderForPendingMatch;
302
+ findChainOrderForSlot: typeof findChainOrderForSlot;
303
+ reconcileAfterUncertainBroadcast: typeof reconcileAfterUncertainBroadcast;
304
+ reconcileAfterUncertainBroadcastImpl: typeof reconcileAfterUncertainBroadcastImpl;
305
+ autoCancelOneUnmatchedOrphan: typeof autoCancelOneUnmatchedOrphan;
306
+ shouldExecuteCreatePairMode: typeof shouldExecuteCreatePairMode;
307
+ executeWithRetryOnUncertain: typeof executeWithRetryOnUncertain;
308
+ executeOperationsWithStrategy: typeof executeOperationsWithStrategy;
309
+ validateOperationFunds: typeof validateOperationFunds;
310
+ resolveIdealSizeForValidation: typeof resolveIdealSizeForValidation;
311
+ validateOrderSizeForExecution: typeof validateOrderSizeForExecution;
312
+ buildActionsFromPlan: typeof buildActionsFromPlan;
313
+ buildCowResultFromPlan: typeof buildCowResultFromPlan;
314
+ restoreSkippedUpdateSlotsInWorkingGrid: typeof restoreSkippedUpdateSlotsInWorkingGrid;
315
+ updateOrdersOnChainBatchCOW: typeof updateOrdersOnChainBatchCOW;
316
+ processBatchResults: typeof processBatchResults;
317
+ };
318
+ export = _default;
319
+ //# sourceMappingURL=dexbot_cow_runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dexbot_cow_runtime.d.ts","sourceRoot":"","sources":["../../modules/dexbot_cow_runtime.ts"],"names":[],"mappings":"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"}