@render-foundation/utils 0.0.235 → 0.0.237

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 (66) hide show
  1. package/lib/cjs/assertSecrets.js +2 -1
  2. package/lib/cjs/assertSecrets.js.map +1 -1
  3. package/lib/cjs/backfiller.js +16 -16
  4. package/lib/cjs/backfiller.js.map +1 -1
  5. package/lib/cjs/client/dispersed.js +4 -4
  6. package/lib/cjs/client/dispersed.js.map +1 -1
  7. package/lib/cjs/client/onchain.js +3 -3
  8. package/lib/cjs/client/onchain.js.map +1 -1
  9. package/lib/cjs/client/pg/base.js +7 -7
  10. package/lib/cjs/client/pg/base.js.map +1 -1
  11. package/lib/cjs/client/pg/v1.js +31 -31
  12. package/lib/cjs/client/pg/v1.js.map +1 -1
  13. package/lib/cjs/client/pg/v2Client.js +225 -148
  14. package/lib/cjs/client/pg/v2Client.js.map +1 -1
  15. package/lib/cjs/client/pg/viewClient.js +6 -6
  16. package/lib/cjs/client/pg/viewClient.js.map +1 -1
  17. package/lib/cjs/client/price.js +2 -2
  18. package/lib/cjs/client/price.js.map +1 -1
  19. package/lib/cjs/client/render.js +10 -10
  20. package/lib/cjs/client/render.js.map +1 -1
  21. package/lib/cjs/client/squads.js +10 -20
  22. package/lib/cjs/client/squads.js.map +1 -1
  23. package/lib/cjs/client/trade.js +12 -15
  24. package/lib/cjs/client/trade.js.map +1 -1
  25. package/lib/cjs/client/wormhole.js +9 -19
  26. package/lib/cjs/client/wormhole.js.map +1 -1
  27. package/lib/cjs/errorReporter.js +1 -1
  28. package/lib/cjs/errorReporter.js.map +1 -1
  29. package/lib/cjs/index.js +7 -17
  30. package/lib/cjs/index.js.map +1 -1
  31. package/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  32. package/lib/esm/src/assertSecrets.js.map +1 -1
  33. package/lib/esm/src/backfiller.js.map +1 -1
  34. package/lib/esm/src/client/dispersed.js.map +1 -1
  35. package/lib/esm/src/client/onchain.js.map +1 -1
  36. package/lib/esm/src/client/pg/base.js.map +1 -1
  37. package/lib/esm/src/client/pg/v1.js.map +1 -1
  38. package/lib/esm/src/client/pg/v2Client.js +106 -22
  39. package/lib/esm/src/client/pg/v2Client.js.map +1 -1
  40. package/lib/esm/src/client/pg/viewClient.js.map +1 -1
  41. package/lib/esm/src/client/price.js.map +1 -1
  42. package/lib/esm/src/client/render.js.map +1 -1
  43. package/lib/esm/src/client/squads.js.map +1 -1
  44. package/lib/esm/src/client/trade.js +2 -2
  45. package/lib/esm/src/client/trade.js.map +1 -1
  46. package/lib/esm/src/client/wormhole.js.map +1 -1
  47. package/lib/esm/src/errorReporter.js.map +1 -1
  48. package/lib/esm/tsconfig.esm.tsbuildinfo +1 -1
  49. package/lib/types/src/backfiller.d.ts.map +1 -1
  50. package/lib/types/src/client/dispersed.d.ts.map +1 -1
  51. package/lib/types/src/client/onchain.d.ts +1 -2
  52. package/lib/types/src/client/onchain.d.ts.map +1 -1
  53. package/lib/types/src/client/pg/base.d.ts.map +1 -1
  54. package/lib/types/src/client/pg/v1.d.ts.map +1 -1
  55. package/lib/types/src/client/pg/v2Client.d.ts +14 -1
  56. package/lib/types/src/client/pg/v2Client.d.ts.map +1 -1
  57. package/lib/types/src/client/pg/viewClient.d.ts.map +1 -1
  58. package/lib/types/src/client/render.d.ts.map +1 -1
  59. package/lib/types/src/client/squads.d.ts.map +1 -1
  60. package/lib/types/src/client/trade.d.ts.map +1 -1
  61. package/lib/types/src/client/wormhole.d.ts +1 -1
  62. package/lib/types/src/client/wormhole.d.ts.map +1 -1
  63. package/lib/types/src/dbTypesV2.d.ts +10 -0
  64. package/lib/types/src/dbTypesV2.d.ts.map +1 -1
  65. package/lib/types/src/errorReporter.d.ts.map +1 -1
  66. package/package.json +1 -1
@@ -15,23 +15,13 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
35
25
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
26
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
27
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -45,7 +35,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
45
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
46
36
  };
47
37
  Object.defineProperty(exports, "__esModule", { value: true });
48
- exports.pgClient = exports.batchFinishedAtMedian = exports.DISPERSED_SETTLEMENT_TABLE = exports.GRANT_BURN_TABLE = exports.GRANT_BURN_ID_TABLE = exports.USER_GRANT_SPEND_TABLE = exports.CURRENT_USER_GRANT_SPEND_TABLE = exports.POLYGON_UPGRADE_TABLE = exports.ENTITY_EPOCH_INFO_TABLE = exports.BURN_CORRECTION_TABLE = exports.NETWORK_REVENUE_TABLE = exports.BRIDGE_TRANSFER_TABLE = exports.BURN_TABLE = exports.JOB_TABLE = exports.JOB_ID_TABLE = exports.LIABILITY_ADJUSTMENT_BATCH_TABLE = exports.LIABILITY_ADJUSTMENT_TABLE = exports.LIABILITY_TABLE = exports.SOL_TRANSFER_TABLE = exports.ENTITY_TABLE = exports.MANUAL_BURN_TABLE = exports.EPOCH_TABLE = exports.SOL_TX_TABLE = void 0;
38
+ exports.pgClient = exports.batchFinishedAtMedian = exports.DISPERSED_BURN_CORRECTION_TABLE = exports.DISPERSED_SETTLEMENT_TABLE = exports.GRANT_BURN_TABLE = exports.GRANT_BURN_ID_TABLE = exports.USER_GRANT_SPEND_TABLE = exports.CURRENT_USER_GRANT_SPEND_TABLE = exports.POLYGON_UPGRADE_TABLE = exports.ENTITY_EPOCH_INFO_TABLE = exports.BURN_CORRECTION_TABLE = exports.NETWORK_REVENUE_TABLE = exports.BRIDGE_TRANSFER_TABLE = exports.BURN_TABLE = exports.JOB_TABLE = exports.JOB_ID_TABLE = exports.LIABILITY_ADJUSTMENT_BATCH_TABLE = exports.LIABILITY_ADJUSTMENT_TABLE = exports.LIABILITY_TABLE = exports.SOL_TRANSFER_TABLE = exports.ENTITY_TABLE = exports.MANUAL_BURN_TABLE = exports.EPOCH_TABLE = exports.SOL_TX_TABLE = void 0;
49
39
  const kysely_1 = require("kysely");
50
40
  const logger_1 = require("../../logger");
51
41
  const pg_1 = require("pg");
@@ -72,6 +62,7 @@ exports.USER_GRANT_SPEND_TABLE = 'user_grant_spend';
72
62
  exports.GRANT_BURN_ID_TABLE = 'grant_burn_id';
73
63
  exports.GRANT_BURN_TABLE = 'grant_burn';
74
64
  exports.DISPERSED_SETTLEMENT_TABLE = 'dispersed_settlement';
65
+ exports.DISPERSED_BURN_CORRECTION_TABLE = 'dispersed_burn_correction';
75
66
  BigInt.prototype.toJSON = function () {
76
67
  return this.toString();
77
68
  };
@@ -92,6 +83,11 @@ const batchFinishedAtMedian = (jobs) => {
92
83
  return pricedAt;
93
84
  };
94
85
  exports.batchFinishedAtMedian = batchFinishedAtMedian;
86
+ // Thrown+caught inside insertDispersedOutbox to roll back the txn when a correction draw would push
87
+ // consumed_render past amount_render (a concurrent draw won the room). Not exported — the caller sees
88
+ // { inserted: false } instead.
89
+ class DispersedCorrectionRejected extends Error {
90
+ }
95
91
  const pgClient = (config) => {
96
92
  // Single pg pool that we can also use for ad-hoc performance tests outside Kysely
97
93
  const pgPool = new pg_1.Pool(config);
@@ -105,7 +101,7 @@ const pgClient = (config) => {
105
101
  const db = new kysely_1.Kysely({
106
102
  dialect,
107
103
  });
108
- const getOrInsertEntity = (db_1, p_1, ...args_1) => __awaiter(void 0, [db_1, p_1, ...args_1], void 0, function* (db, p, log = logger_1.consoleLogger) {
104
+ const getOrInsertEntity = (db, p, log = logger_1.consoleLogger) => __awaiter(void 0, void 0, void 0, function* () {
109
105
  const res = (yield db
110
106
  .selectFrom(exports.ENTITY_TABLE)
111
107
  .select('id')
@@ -126,7 +122,7 @@ const pgClient = (config) => {
126
122
  log.debug(`inserted entity ${id}`);
127
123
  return id;
128
124
  });
129
- const getOrInsertTx = (db_1, p_1, ...args_1) => __awaiter(void 0, [db_1, p_1, ...args_1], void 0, function* (db, p, log = logger_1.consoleLogger) {
125
+ const getOrInsertTx = (db, p, log = logger_1.consoleLogger) => __awaiter(void 0, void 0, void 0, function* () {
130
126
  const res = yield db
131
127
  .selectFrom(exports.SOL_TX_TABLE)
132
128
  .select('id')
@@ -148,7 +144,7 @@ const pgClient = (config) => {
148
144
  log.debug(`inserted tx ${id}`);
149
145
  return id;
150
146
  });
151
- const getOrInsertEpoch = (db_1, p_1, ...args_1) => __awaiter(void 0, [db_1, p_1, ...args_1], void 0, function* (db, p, log = logger_1.consoleLogger) {
147
+ const getOrInsertEpoch = (db, p, log = logger_1.consoleLogger) => __awaiter(void 0, void 0, void 0, function* () {
152
148
  const res = yield db
153
149
  .selectFrom(exports.EPOCH_TABLE)
154
150
  .select('id')
@@ -176,7 +172,7 @@ const pgClient = (config) => {
176
172
  log.debug(`inserted epoch ${id}`);
177
173
  return id;
178
174
  });
179
- const getCurrentUserGrantSpend = (db_1, p_1, ...args_1) => __awaiter(void 0, [db_1, p_1, ...args_1], void 0, function* (db, p, log = logger_1.consoleLogger) {
175
+ const getCurrentUserGrantSpend = (db, p, log = logger_1.consoleLogger) => __awaiter(void 0, void 0, void 0, function* () {
180
176
  var _a;
181
177
  const res = yield db
182
178
  .selectFrom(exports.CURRENT_USER_GRANT_SPEND_TABLE)
@@ -206,7 +202,7 @@ const pgClient = (config) => {
206
202
  .executeTakeFirst());
207
203
  log.info(`set ${res.numUpdatedRows} rows. channel: ${p.channel}, ui: ${p.uiEpochId} -> totalRndr ${totalRndr} `);
208
204
  });
209
- const fetchJobs1 = (db_1, f_1, ...args_1) => __awaiter(void 0, [db_1, f_1, ...args_1], void 0, function* (db, f, log = logger_1.consoleLogger) {
205
+ const fetchJobs1 = (db, f, log = logger_1.consoleLogger) => __awaiter(void 0, void 0, void 0, function* () {
210
206
  let q = db.selectFrom('job').selectAll();
211
207
  //.where('job.burn_id', 'is not', null)
212
208
  if (f.completedAtAfter) {
@@ -236,7 +232,7 @@ const pgClient = (config) => {
236
232
  insertedAt: r.inserted_at,
237
233
  }));
238
234
  });
239
- const fetchJobs2 = (db_1, f_1, ...args_1) => __awaiter(void 0, [db_1, f_1, ...args_1], void 0, function* (db, f, log = logger_1.consoleLogger) {
235
+ const fetchJobs2 = (db, f, log = logger_1.consoleLogger) => __awaiter(void 0, void 0, void 0, function* () {
240
236
  let q = db.selectFrom('job').selectAll();
241
237
  //.where('job.burn_id', 'is not', null)
242
238
  if (f.completedAtAfter) {
@@ -270,7 +266,7 @@ const pgClient = (config) => {
270
266
  });
271
267
  });
272
268
  });
273
- const createBridgeTransfers = (db_1, bts_1, ...args_1) => __awaiter(void 0, [db_1, bts_1, ...args_1], void 0, function* (db, bts, log = logger_1.consoleLogger) {
269
+ const createBridgeTransfers = (db, bts, log = logger_1.consoleLogger) => __awaiter(void 0, void 0, void 0, function* () {
274
270
  const sequenceNumbers = [];
275
271
  const dbEpochIds = [];
276
272
  for (const bt of bts) {
@@ -314,7 +310,7 @@ const pgClient = (config) => {
314
310
  }
315
311
  return { sequenceNumbers: sequenceNumbers };
316
312
  });
317
- const createPayments = (db_1, ps_1, ...args_1) => __awaiter(void 0, [db_1, ps_1, ...args_1], void 0, function* (db, ps, log = logger_1.consoleLogger) {
313
+ const createPayments = (db, ps, log = logger_1.consoleLogger) => __awaiter(void 0, void 0, void 0, function* () {
318
314
  const ids = [];
319
315
  const epochDbIds = [];
320
316
  for (const p of ps) {
@@ -411,18 +407,18 @@ const pgClient = (config) => {
411
407
  rollback: () => { },
412
408
  trx: db,
413
409
  },
414
- startTransaction() {
415
- return __awaiter(this, arguments, void 0, function* (log = logger_1.consoleLogger) {
410
+ startTransaction(log = logger_1.consoleLogger) {
411
+ return __awaiter(this, void 0, void 0, function* () {
416
412
  return (0, base_2.begin)(db, log);
417
413
  });
418
414
  },
419
- createPayments(db_1, ps_1) {
420
- return __awaiter(this, arguments, void 0, function* (db, ps, log = logger_1.consoleLogger) {
415
+ createPayments(db, ps, log = logger_1.consoleLogger) {
416
+ return __awaiter(this, void 0, void 0, function* () {
421
417
  return createPayments(db.trx, ps, log);
422
418
  });
423
419
  },
424
- fetchTransfers(db_1, f_1) {
425
- return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
420
+ fetchTransfers(db, f, log = logger_1.consoleLogger) {
421
+ return __awaiter(this, void 0, void 0, function* () {
426
422
  let lastId = undefined;
427
423
  if (f.cursor) {
428
424
  lastId = atob(f.cursor);
@@ -478,8 +474,8 @@ const pgClient = (config) => {
478
474
  };
479
475
  });
480
476
  },
481
- fetchEpochs(db_1, f_1) {
482
- return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
477
+ fetchEpochs(db, f, log = logger_1.consoleLogger) {
478
+ return __awaiter(this, void 0, void 0, function* () {
483
479
  let q = db.trx.selectFrom(exports.EPOCH_TABLE).selectAll();
484
480
  if (f.channels) {
485
481
  q = q.where('channel', 'in', f.channels);
@@ -502,9 +498,9 @@ const pgClient = (config) => {
502
498
  }));
503
499
  });
504
500
  },
505
- fetchLiabilities(db_1, f_1) {
506
- return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
507
- var _a;
501
+ fetchLiabilities(db, f, log = logger_1.consoleLogger) {
502
+ var _a;
503
+ return __awaiter(this, void 0, void 0, function* () {
508
504
  let offset = 0;
509
505
  let orderBy = (_a = f.orderBy) !== null && _a !== void 0 ? _a : 'epoch.ui,liability.id';
510
506
  if (f.cursor) {
@@ -571,8 +567,8 @@ const pgClient = (config) => {
571
567
  };
572
568
  });
573
569
  },
574
- getLiabilitiesAndTransfers(f_1) {
575
- return __awaiter(this, arguments, void 0, function* (f, log = logger_1.consoleLogger) {
570
+ getLiabilitiesAndTransfers(f, log = logger_1.consoleLogger) {
571
+ return __awaiter(this, void 0, void 0, function* () {
576
572
  let lq = db
577
573
  .selectFrom(exports.LIABILITY_TABLE)
578
574
  .selectAll()
@@ -633,9 +629,9 @@ const pgClient = (config) => {
633
629
  return { transfers, liabilities, epochs: Object.values(epochs) };
634
630
  });
635
631
  },
636
- getOutstanding(f_1) {
637
- return __awaiter(this, arguments, void 0, function* (f, log = logger_1.consoleLogger) {
638
- var _a, _b, _c, _d, _e;
632
+ getOutstanding(f, log = logger_1.consoleLogger) {
633
+ var _a, _b, _c, _d, _e;
634
+ return __awaiter(this, void 0, void 0, function* () {
639
635
  log.info(`getting outstanding balances for ${(_a = f.channels) !== null && _a !== void 0 ? _a : '(no channels specified)'} epoch: ${(_b = f.startEpochId.id) !== null && _b !== void 0 ? _b : '(no epoch specified)'}`);
640
636
  let epochUi;
641
637
  let epochEndTime;
@@ -771,8 +767,8 @@ const pgClient = (config) => {
771
767
  return out;
772
768
  });
773
769
  },
774
- addLiabilityAdjustments(batch_1, rows_1) {
775
- return __awaiter(this, arguments, void 0, function* (batch, rows, log = logger_1.consoleLogger) {
770
+ addLiabilityAdjustments(batch, rows, log = logger_1.consoleLogger) {
771
+ return __awaiter(this, void 0, void 0, function* () {
776
772
  return yield db.transaction().execute((trx) => __awaiter(this, void 0, void 0, function* () {
777
773
  var _a;
778
774
  // Upsert the batch by its label (idempotent re-runs; label is the run identity).
@@ -824,9 +820,9 @@ const pgClient = (config) => {
824
820
  }));
825
821
  });
826
822
  },
827
- fetchNodeOperatorEpoch(epochId_1) {
828
- return __awaiter(this, arguments, void 0, function* (epochId, log = logger_1.consoleLogger) {
829
- var _a;
823
+ fetchNodeOperatorEpoch(epochId, log = logger_1.consoleLogger) {
824
+ var _a;
825
+ return __awaiter(this, void 0, void 0, function* () {
830
826
  const q = db
831
827
  .selectFrom(exports.JOB_ID_TABLE)
832
828
  .innerJoin(exports.EPOCH_TABLE, 'epoch.id', 'job_id.epoch_id')
@@ -876,14 +872,14 @@ const pgClient = (config) => {
876
872
  };
877
873
  });
878
874
  },
879
- insertEpoch(db_1, epoch_1) {
880
- return __awaiter(this, arguments, void 0, function* (db, epoch, log = logger_1.consoleLogger) {
875
+ insertEpoch(db, epoch, log = logger_1.consoleLogger) {
876
+ return __awaiter(this, void 0, void 0, function* () {
881
877
  yield getOrInsertEpoch(db.trx, Object.assign(Object.assign({}, epoch), { uiEpochId: epoch.ui }), log);
882
878
  });
883
879
  },
884
- getEpoch(f_1) {
885
- return __awaiter(this, arguments, void 0, function* (f, log = logger_1.consoleLogger) {
886
- var _a;
880
+ getEpoch(f, log = logger_1.consoleLogger) {
881
+ var _a;
882
+ return __awaiter(this, void 0, void 0, function* () {
887
883
  const now = new Date(Date.now());
888
884
  try {
889
885
  let q = db
@@ -921,9 +917,9 @@ const pgClient = (config) => {
921
917
  }
922
918
  });
923
919
  },
924
- getLatestNodeOperatorEpoch(f_1) {
925
- return __awaiter(this, arguments, void 0, function* (f, log = logger_1.consoleLogger) {
926
- var _a;
920
+ getLatestNodeOperatorEpoch(f, log = logger_1.consoleLogger) {
921
+ var _a;
922
+ return __awaiter(this, void 0, void 0, function* () {
927
923
  const now = new Date(Date.now());
928
924
  try {
929
925
  let q = db
@@ -963,8 +959,8 @@ const pgClient = (config) => {
963
959
  }
964
960
  });
965
961
  },
966
- saveNodeOperatorEpoch(epochId_1, liabilities_1, jobIds_1, totalRndr_1) {
967
- return __awaiter(this, arguments, void 0, function* (epochId, liabilities, jobIds, totalRndr, log = logger_1.consoleLogger) {
962
+ saveNodeOperatorEpoch(epochId, liabilities, jobIds, totalRndr, log = logger_1.consoleLogger) {
963
+ return __awaiter(this, void 0, void 0, function* () {
968
964
  yield db
969
965
  .transaction()
970
966
  .setIsolationLevel('repeatable read')
@@ -1000,8 +996,8 @@ const pgClient = (config) => {
1000
996
  return;
1001
997
  });
1002
998
  },
1003
- produceBurnedJobs(jobs_1) {
1004
- return __awaiter(this, arguments, void 0, function* (jobs, log = logger_1.consoleLogger) {
999
+ produceBurnedJobs(jobs, log = logger_1.consoleLogger) {
1000
+ return __awaiter(this, void 0, void 0, function* () {
1005
1001
  yield db.transaction().execute((trx) => __awaiter(this, void 0, void 0, function* () {
1006
1002
  var _a;
1007
1003
  let num = BigInt(0);
@@ -1024,9 +1020,9 @@ const pgClient = (config) => {
1024
1020
  }));
1025
1021
  });
1026
1022
  },
1027
- markJobsBurntWithGrant(db_1, p_1) {
1028
- return __awaiter(this, arguments, void 0, function* (db, p, log = logger_1.consoleLogger) {
1029
- var _a;
1023
+ markJobsBurntWithGrant(db, p, log = logger_1.consoleLogger) {
1024
+ var _a;
1025
+ return __awaiter(this, void 0, void 0, function* () {
1030
1026
  const solTxId = yield getOrInsertTx(db.trx, { sig: p.tx.sig, executedAt: p.tx.executedAt }, log);
1031
1027
  const { id } = yield db.trx
1032
1028
  .insertInto(exports.GRANT_BURN_TABLE)
@@ -1057,9 +1053,9 @@ const pgClient = (config) => {
1057
1053
  return;
1058
1054
  });
1059
1055
  },
1060
- insertGrantSpend(db_1, p_1) {
1061
- return __awaiter(this, arguments, void 0, function* (db, p, log = logger_1.consoleLogger) {
1062
- var _a, _b, _c;
1056
+ insertGrantSpend(db, p, log = logger_1.consoleLogger) {
1057
+ var _a, _b, _c;
1058
+ return __awaiter(this, void 0, void 0, function* () {
1063
1059
  const existing = yield getCurrentUserGrantSpend(db.trx, { userId: p.userId }, log);
1064
1060
  const diff = {
1065
1061
  render_spent: ((_a = existing === null || existing === void 0 ? void 0 : existing.renderSpent) !== null && _a !== void 0 ? _a : BigInt(0)) + p.renderSpentDelta,
@@ -1124,9 +1120,9 @@ const pgClient = (config) => {
1124
1120
  }
1125
1121
  });
1126
1122
  },
1127
- markJobsBurnt(trx_1, p_1) {
1128
- return __awaiter(this, arguments, void 0, function* (trx, p, log = logger_1.consoleLogger) {
1129
- var _a, _b;
1123
+ markJobsBurnt(trx, p, log = logger_1.consoleLogger) {
1124
+ var _a, _b;
1125
+ return __awaiter(this, void 0, void 0, function* () {
1130
1126
  if (!p.buyBurn && !p.grantBurn) {
1131
1127
  throw new Error('no buyBurn or grantBurn');
1132
1128
  }
@@ -1227,8 +1223,8 @@ const pgClient = (config) => {
1227
1223
  return { grantBurnId, buyBurnId };
1228
1224
  });
1229
1225
  },
1230
- markJobsBurned(trx_1, p_1) {
1231
- return __awaiter(this, arguments, void 0, function* (trx, p, log = logger_1.consoleLogger) {
1226
+ markJobsBurned(trx, p, log = logger_1.consoleLogger) {
1227
+ return __awaiter(this, void 0, void 0, function* () {
1232
1228
  let { markedAt, solTx } = p;
1233
1229
  let res = yield trx.trx
1234
1230
  .updateTable(exports.BURN_TABLE)
@@ -1252,8 +1248,8 @@ const pgClient = (config) => {
1252
1248
  }
1253
1249
  });
1254
1250
  },
1255
- consumeAndLockBurnJobs(limit_1, lowerRndrThreshold_1, upperRndrThreshold_1) {
1256
- return __awaiter(this, arguments, void 0, function* (limit, lowerRndrThreshold, upperRndrThreshold, log = logger_1.consoleLogger) {
1251
+ consumeAndLockBurnJobs(limit, lowerRndrThreshold, upperRndrThreshold, log = logger_1.consoleLogger) {
1252
+ return __awaiter(this, void 0, void 0, function* () {
1257
1253
  const trx = yield (0, base_2.begin)(db, log);
1258
1254
  const q = trx.trx
1259
1255
  .selectFrom(trx.trx
@@ -1360,9 +1356,9 @@ const pgClient = (config) => {
1360
1356
  };
1361
1357
  });
1362
1358
  },
1363
- incrBuyBurnMetrics() {
1364
- return __awaiter(this, arguments, void 0, function* (log = logger_1.consoleLogger) {
1365
- var _a;
1359
+ incrBuyBurnMetrics(log = logger_1.consoleLogger) {
1360
+ var _a;
1361
+ return __awaiter(this, void 0, void 0, function* () {
1366
1362
  const res = yield db
1367
1363
  .selectFrom(exports.JOB_TABLE)
1368
1364
  .select('inserted_at')
@@ -1379,9 +1375,9 @@ const pgClient = (config) => {
1379
1375
  };
1380
1376
  });
1381
1377
  },
1382
- fetchBurns(db_1, f_1) {
1383
- return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
1384
- var _a, _b;
1378
+ fetchBurns(db, f, log = logger_1.consoleLogger) {
1379
+ var _a, _b;
1380
+ return __awaiter(this, void 0, void 0, function* () {
1385
1381
  let q = db.trx
1386
1382
  .selectFrom('burn')
1387
1383
  .selectAll('burn')
@@ -1450,9 +1446,9 @@ const pgClient = (config) => {
1450
1446
  return burns;
1451
1447
  });
1452
1448
  },
1453
- fetchBurnsAndGrants(db_1, f_1) {
1454
- return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
1455
- var _a, _b;
1449
+ fetchBurnsAndGrants(db, f, log = logger_1.consoleLogger) {
1450
+ var _a, _b;
1451
+ return __awaiter(this, void 0, void 0, function* () {
1456
1452
  // Build a unified query to get all transactions with both buy burns and grant burns
1457
1453
  let baseQuery = db.trx
1458
1454
  .selectFrom('sol_tx')
@@ -1590,13 +1586,13 @@ const pgClient = (config) => {
1590
1586
  return groupedBurns;
1591
1587
  });
1592
1588
  },
1593
- createBridgeTransfers(db_1, bts_1) {
1594
- return __awaiter(this, arguments, void 0, function* (db, bts, log = logger_1.consoleLogger) {
1589
+ createBridgeTransfers(db, bts, log = logger_1.consoleLogger) {
1590
+ return __awaiter(this, void 0, void 0, function* () {
1595
1591
  return createBridgeTransfers(db.trx, bts, log);
1596
1592
  });
1597
1593
  },
1598
- getBridgeTransfers(_a) {
1599
- return __awaiter(this, arguments, void 0, function* ({ solKey, page, }, log = logger_1.consoleLogger) {
1594
+ getBridgeTransfers({ solKey, page, }, log = logger_1.consoleLogger) {
1595
+ return __awaiter(this, void 0, void 0, function* () {
1600
1596
  let q = db
1601
1597
  .selectFrom(exports.BRIDGE_TRANSFER_TABLE)
1602
1598
  .innerJoin(exports.EPOCH_TABLE, 'epoch.id', 'bridge_transfer.epoch_id')
@@ -1673,8 +1669,8 @@ const pgClient = (config) => {
1673
1669
  });
1674
1670
  },
1675
1671
  getTotalBurned(db) {
1672
+ var _a, _b;
1676
1673
  return __awaiter(this, void 0, void 0, function* () {
1677
- var _a, _b;
1678
1674
  const total = yield db.trx
1679
1675
  .selectFrom('burn')
1680
1676
  .select(({ fn }) => fn.sum('burned').as('total_burned'))
@@ -1682,8 +1678,8 @@ const pgClient = (config) => {
1682
1678
  return BigInt((_b = (_a = total[0]) === null || _a === void 0 ? void 0 : _a.total_burned) !== null && _b !== void 0 ? _b : 0);
1683
1679
  });
1684
1680
  },
1685
- insertBurn(p_1) {
1686
- return __awaiter(this, arguments, void 0, function* (p, log = logger_1.consoleLogger) {
1681
+ insertBurn(p, log = logger_1.consoleLogger) {
1682
+ return __awaiter(this, void 0, void 0, function* () {
1687
1683
  yield db.transaction().execute((trx) => __awaiter(this, void 0, void 0, function* () {
1688
1684
  var _a;
1689
1685
  const solTxId = yield getOrInsertTx(trx, { sig: p.solTx, executedAt: p.executedAt }, log);
@@ -1720,29 +1716,86 @@ const pgClient = (config) => {
1720
1716
  }));
1721
1717
  });
1722
1718
  },
1723
- insertDispersedOutbox(p_1) {
1724
- return __awaiter(this, arguments, void 0, function* (p, log = logger_1.consoleLogger) {
1725
- var _a, _b, _c;
1726
- const res = yield db
1727
- .insertInto(exports.DISPERSED_SETTLEMENT_TABLE)
1728
- .values({
1729
- tx_signature: p.txSignature,
1730
- claim_uuid: p.claimUuid,
1731
- obligation_uuids: p.obligationUuids,
1732
- settled_amount: p.settledAmount,
1733
- burned_amount: p.burnedAmount,
1734
- executed_at: p.executedAt,
1735
- eur_render: (_a = p.eurRender) !== null && _a !== void 0 ? _a : null,
1736
- last_valid_block_height: (_b = p.lastValidBlockHeight) !== null && _b !== void 0 ? _b : null,
1737
- usdc_spent: (_c = p.usdcSpent) !== null && _c !== void 0 ? _c : null,
1738
- })
1739
- .onConflict((oc) => oc.column('tx_signature').doNothing())
1719
+ insertDispersedOutbox(p, log = logger_1.consoleLogger) {
1720
+ return __awaiter(this, void 0, void 0, function* () {
1721
+ // The outbox row is the durable, crash-safe anchor persisted BEFORE broadcast. When it carries a
1722
+ // burn-correction draw, we increment consumed_render in the SAME transaction as the insert, bounded
1723
+ // so it can never exceed amount_render. Row + counter are therefore atomic and inseparable: no
1724
+ // reserve/insert gap to orphan on process death, and the counter reflects exactly the durable rows
1725
+ // (decremented again by voidDispersedOutbox). If the bounded increment can't fit (a concurrent draw
1726
+ // took the room), the whole txn rolls back and we return {inserted:false} — the caller must NOT
1727
+ // broadcast (no row, no counter change, no burn).
1728
+ return yield db.transaction().execute((trx) => __awaiter(this, void 0, void 0, function* () {
1729
+ var _a, _b, _c, _d, _e, _f, _g;
1730
+ const res = yield trx
1731
+ .insertInto(exports.DISPERSED_SETTLEMENT_TABLE)
1732
+ .values({
1733
+ tx_signature: p.txSignature,
1734
+ claim_uuid: p.claimUuid,
1735
+ obligation_uuids: p.obligationUuids,
1736
+ settled_amount: p.settledAmount,
1737
+ burned_amount: p.burnedAmount,
1738
+ executed_at: p.executedAt,
1739
+ eur_render: (_a = p.eurRender) !== null && _a !== void 0 ? _a : null,
1740
+ last_valid_block_height: (_b = p.lastValidBlockHeight) !== null && _b !== void 0 ? _b : null,
1741
+ usdc_spent: (_c = p.usdcSpent) !== null && _c !== void 0 ? _c : null,
1742
+ correction_id: (_d = p.correctionId) !== null && _d !== void 0 ? _d : null,
1743
+ correction_render: (_e = p.correctionRender) !== null && _e !== void 0 ? _e : null,
1744
+ })
1745
+ .onConflict((oc) => oc.column('tx_signature').doNothing())
1746
+ .executeTakeFirst();
1747
+ const inserted = ((_f = res.numInsertedOrUpdatedRows) !== null && _f !== void 0 ? _f : BigInt(0)) > BigInt(0);
1748
+ // Only reserve when the row was actually inserted (a tx_signature conflict is a no-op → no double
1749
+ // count) and it drew a correction.
1750
+ if (inserted &&
1751
+ p.correctionId != null &&
1752
+ p.correctionRender != null &&
1753
+ Number(p.correctionRender) > 0) {
1754
+ const upd = yield trx
1755
+ .updateTable(exports.DISPERSED_BURN_CORRECTION_TABLE)
1756
+ .set({
1757
+ consumed_render: (0, kysely_1.sql) `consumed_render + ${p.correctionRender}::numeric`,
1758
+ })
1759
+ .where('id', '=', String(p.correctionId))
1760
+ .where((eb) => eb((0, kysely_1.sql) `consumed_render + ${p.correctionRender}::numeric`, '<=', eb.ref('amount_render')))
1761
+ .executeTakeFirst();
1762
+ if (((_g = upd.numUpdatedRows) !== null && _g !== void 0 ? _g : BigInt(0)) === BigInt(0)) {
1763
+ // Would exceed amount_render (concurrent draw won the room) — roll back the whole txn.
1764
+ log.warn(`dispersed correction ${p.correctionId}: draw ${p.correctionRender} would over-consume; rejecting outbox insert for tx ${p.txSignature}`);
1765
+ throw new DispersedCorrectionRejected();
1766
+ }
1767
+ }
1768
+ log.debug(`dispersed outbox tx ${p.txSignature}: ${res.numInsertedOrUpdatedRows} row(s)`);
1769
+ return { inserted };
1770
+ })).catch((e) => {
1771
+ if (e instanceof DispersedCorrectionRejected)
1772
+ return { inserted: false };
1773
+ throw e;
1774
+ });
1775
+ });
1776
+ },
1777
+ getOutstandingDispersedCorrection(log = logger_1.consoleLogger) {
1778
+ return __awaiter(this, void 0, void 0, function* () {
1779
+ // consumed_render is the atomic source of truth; outstanding = amount_render - consumed_render.
1780
+ const c = yield db
1781
+ .selectFrom(exports.DISPERSED_BURN_CORRECTION_TABLE)
1782
+ .select(['id', 'amount_render', 'consumed_render'])
1783
+ .where((eb) => eb('consumed_render', '<', eb.ref('amount_render')))
1784
+ .orderBy('id', 'asc')
1785
+ .limit(1)
1740
1786
  .executeTakeFirst();
1741
- log.debug(`dispersed outbox tx ${p.txSignature}: ${res.numInsertedOrUpdatedRows} row(s)`);
1787
+ if (!c)
1788
+ return null;
1789
+ log.debug(`dispersed correction ${c.id}: outstanding ${Number(c.amount_render) - Number(c.consumed_render)} RENDER`);
1790
+ return {
1791
+ id: Number(c.id),
1792
+ amountRender: c.amount_render,
1793
+ consumed: c.consumed_render,
1794
+ };
1742
1795
  });
1743
1796
  },
1744
- markDispersedSettled(txSignature_1, p_1) {
1745
- return __awaiter(this, arguments, void 0, function* (txSignature, p, log = logger_1.consoleLogger) {
1797
+ markDispersedSettled(txSignature, p, log = logger_1.consoleLogger) {
1798
+ return __awaiter(this, void 0, void 0, function* () {
1746
1799
  yield db
1747
1800
  .updateTable(exports.DISPERSED_SETTLEMENT_TABLE)
1748
1801
  .set({ settled_at: new Date(), idempotent_replay: p.idempotentReplay })
@@ -1751,8 +1804,8 @@ const pgClient = (config) => {
1751
1804
  log.debug(`dispersed settled tx ${txSignature}`);
1752
1805
  });
1753
1806
  },
1754
- getUnsettledDispersed() {
1755
- return __awaiter(this, arguments, void 0, function* (log = logger_1.consoleLogger) {
1807
+ getUnsettledDispersed(log = logger_1.consoleLogger) {
1808
+ return __awaiter(this, void 0, void 0, function* () {
1756
1809
  const rows = yield db
1757
1810
  .selectFrom(exports.DISPERSED_SETTLEMENT_TABLE)
1758
1811
  .selectAll()
@@ -1778,20 +1831,44 @@ const pgClient = (config) => {
1778
1831
  });
1779
1832
  });
1780
1833
  },
1781
- voidDispersedOutbox(txSignature_1) {
1782
- return __awaiter(this, arguments, void 0, function* (txSignature, log = logger_1.consoleLogger) {
1783
- const res = yield db
1784
- .deleteFrom(exports.DISPERSED_SETTLEMENT_TABLE)
1785
- .where('tx_signature', '=', txSignature)
1786
- // Never delete a row we already settled — void only applies to pending (un-landed) rows.
1787
- .where('settled_at', 'is', null)
1788
- .executeTakeFirst();
1789
- log.debug(`dispersed outbox void tx ${txSignature}: ${res.numDeletedRows} row(s)`);
1834
+ voidDispersedOutbox(txSignature, log = logger_1.consoleLogger) {
1835
+ return __awaiter(this, void 0, void 0, function* () {
1836
+ // Void = the burn provably never landed. If the row drew a correction, give that draw back
1837
+ // (decrement consumed_render) in the SAME txn as the delete, so the correction only counts draws
1838
+ // whose burns actually landed. This is how a released reservation is reconciled from chain state.
1839
+ yield db.transaction().execute((trx) => __awaiter(this, void 0, void 0, function* () {
1840
+ var _a;
1841
+ const row = yield trx
1842
+ .selectFrom(exports.DISPERSED_SETTLEMENT_TABLE)
1843
+ .select(['correction_id', 'correction_render'])
1844
+ .where('tx_signature', '=', txSignature)
1845
+ .where('settled_at', 'is', null)
1846
+ .executeTakeFirst();
1847
+ const res = yield trx
1848
+ .deleteFrom(exports.DISPERSED_SETTLEMENT_TABLE)
1849
+ .where('tx_signature', '=', txSignature)
1850
+ // Never delete a row we already settled — void only applies to pending (un-landed) rows.
1851
+ .where('settled_at', 'is', null)
1852
+ .executeTakeFirst();
1853
+ if (((_a = res.numDeletedRows) !== null && _a !== void 0 ? _a : BigInt(0)) > BigInt(0) &&
1854
+ (row === null || row === void 0 ? void 0 : row.correction_id) != null &&
1855
+ row.correction_render != null) {
1856
+ yield trx
1857
+ .updateTable(exports.DISPERSED_BURN_CORRECTION_TABLE)
1858
+ .set({
1859
+ consumed_render: (0, kysely_1.sql) `GREATEST(0, consumed_render - ${row.correction_render}::numeric)`,
1860
+ })
1861
+ .where('id', '=', row.correction_id)
1862
+ .execute();
1863
+ log.debug(`dispersed void tx ${txSignature}: released ${row.correction_render} RENDER to correction ${row.correction_id}`);
1864
+ }
1865
+ log.debug(`dispersed outbox void tx ${txSignature}: ${res.numDeletedRows} row(s)`);
1866
+ }));
1790
1867
  });
1791
1868
  },
1792
- fetchDispersedSettlements(f_1) {
1793
- return __awaiter(this, arguments, void 0, function* (f, _log = logger_1.consoleLogger) {
1794
- var _a;
1869
+ fetchDispersedSettlements(f, _log = logger_1.consoleLogger) {
1870
+ var _a;
1871
+ return __awaiter(this, void 0, void 0, function* () {
1795
1872
  let q = db
1796
1873
  .selectFrom(exports.DISPERSED_SETTLEMENT_TABLE)
1797
1874
  // Settled burns only — pending (un-landed) outbox rows aren't real, completed burns.
@@ -1831,8 +1908,8 @@ const pgClient = (config) => {
1831
1908
  });
1832
1909
  });
1833
1910
  },
1834
- fetchDispersedMonthlyStats(f_1) {
1835
- return __awaiter(this, arguments, void 0, function* (f, _log = logger_1.consoleLogger) {
1911
+ fetchDispersedMonthlyStats(f, _log = logger_1.consoleLogger) {
1912
+ return __awaiter(this, void 0, void 0, function* () {
1836
1913
  let q = db
1837
1914
  .selectFrom(exports.DISPERSED_SETTLEMENT_TABLE)
1838
1915
  .where('settled_at', 'is not', null);
@@ -1862,18 +1939,18 @@ const pgClient = (config) => {
1862
1939
  }));
1863
1940
  });
1864
1941
  },
1865
- fetchJobs(db_1, f_1) {
1866
- return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
1942
+ fetchJobs(db, f, log = logger_1.consoleLogger) {
1943
+ return __awaiter(this, void 0, void 0, function* () {
1867
1944
  return yield fetchJobs1(db.trx, f, log);
1868
1945
  });
1869
1946
  },
1870
- fetchJobsWithGrantValues(db_1, f_1) {
1871
- return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
1947
+ fetchJobsWithGrantValues(db, f, log = logger_1.consoleLogger) {
1948
+ return __awaiter(this, void 0, void 0, function* () {
1872
1949
  return yield fetchJobs2(db.trx, f, log);
1873
1950
  });
1874
1951
  },
1875
- fetchLiabilityEpochs(db_1) {
1876
- return __awaiter(this, arguments, void 0, function* (db, log = logger_1.consoleLogger) {
1952
+ fetchLiabilityEpochs(db, log = logger_1.consoleLogger) {
1953
+ return __awaiter(this, void 0, void 0, function* () {
1877
1954
  const q = db.trx
1878
1955
  .selectFrom(exports.LIABILITY_TABLE)
1879
1956
  .select(({ fn }) => [
@@ -1931,8 +2008,8 @@ const pgClient = (config) => {
1931
2008
  }));
1932
2009
  });
1933
2010
  },
1934
- createBurnCorrection(trx_1, p_1) {
1935
- return __awaiter(this, arguments, void 0, function* (trx, p, log = logger_1.consoleLogger) {
2011
+ createBurnCorrection(trx, p, log = logger_1.consoleLogger) {
2012
+ return __awaiter(this, void 0, void 0, function* () {
1936
2013
  // Anchor + unit invariants are also DB CHECKs; validate here for a clearer error.
1937
2014
  if ((p.jobId == null) === (p.solTxId == null))
1938
2015
  throw new Error('burn_correction needs exactly one anchor (jobId XOR solTxId)');
@@ -1962,8 +2039,8 @@ const pgClient = (config) => {
1962
2039
  return Number(row.id);
1963
2040
  });
1964
2041
  },
1965
- getBurnCorrections(trx_1, ps_1) {
1966
- return __awaiter(this, arguments, void 0, function* (trx, ps, log = logger_1.consoleLogger) {
2042
+ getBurnCorrections(trx, ps, log = logger_1.consoleLogger) {
2043
+ return __awaiter(this, void 0, void 0, function* () {
1967
2044
  if (!ps.toFill)
1968
2045
  return [];
1969
2046
  // fill column depends on kind: down_adjust consumes (to_burn - burned); escrow_credit consumes
@@ -2006,8 +2083,8 @@ const pgClient = (config) => {
2006
2083
  });
2007
2084
  });
2008
2085
  },
2009
- insertPolygonUpgrade(db_1, p_1) {
2010
- return __awaiter(this, arguments, void 0, function* (db, p, log = logger_1.consoleLogger) {
2086
+ insertPolygonUpgrade(db, p, log = logger_1.consoleLogger) {
2087
+ return __awaiter(this, void 0, void 0, function* () {
2011
2088
  const solTxId = yield getOrInsertTx(db.trx, {
2012
2089
  sig: p.solTx.sig,
2013
2090
  executedAt: p.solTx.executedAt,
@@ -2025,8 +2102,8 @@ const pgClient = (config) => {
2025
2102
  return;
2026
2103
  });
2027
2104
  },
2028
- fetchPolygonUpgrades(db_1, f_1) {
2029
- return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
2105
+ fetchPolygonUpgrades(db, f, log = logger_1.consoleLogger) {
2106
+ return __awaiter(this, void 0, void 0, function* () {
2030
2107
  let query = db.trx
2031
2108
  .selectFrom('polygon_upgrade')
2032
2109
  .selectAll('polygon_upgrade')
@@ -2052,13 +2129,13 @@ const pgClient = (config) => {
2052
2129
  }));
2053
2130
  });
2054
2131
  },
2055
- getCurrentUserGrantSpend(db_1, f_1) {
2056
- return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
2132
+ getCurrentUserGrantSpend(db, f, log = logger_1.consoleLogger) {
2133
+ return __awaiter(this, void 0, void 0, function* () {
2057
2134
  return yield getCurrentUserGrantSpend(db.trx, f, log);
2058
2135
  });
2059
2136
  },
2060
- deleteAll() {
2061
- return __awaiter(this, arguments, void 0, function* (log = logger_1.consoleLogger) {
2137
+ deleteAll(log = logger_1.consoleLogger) {
2138
+ return __awaiter(this, void 0, void 0, function* () {
2062
2139
  if (config.database.includes('render')) {
2063
2140
  throw new Error('cannot nuke from deployed database. call from tests only');
2064
2141
  }
@@ -2104,8 +2181,8 @@ const pgClient = (config) => {
2104
2181
  }
2105
2182
  });
2106
2183
  },
2107
- checkPaymentsForDate(targetDate_1) {
2108
- return __awaiter(this, arguments, void 0, function* (targetDate, channel = 'both', log = logger_1.consoleLogger) {
2184
+ checkPaymentsForDate(targetDate, channel = 'both', log = logger_1.consoleLogger) {
2185
+ return __awaiter(this, void 0, void 0, function* () {
2109
2186
  const startOfDay = new Date(targetDate);
2110
2187
  startOfDay.setHours(0, 0, 0, 0);
2111
2188
  const endOfDay = new Date(targetDate);
@@ -2156,8 +2233,8 @@ const pgClient = (config) => {
2156
2233
  }
2157
2234
  });
2158
2235
  },
2159
- checkEpochProcessed(epochId_1, channel_1) {
2160
- return __awaiter(this, arguments, void 0, function* (epochId, channel, log = logger_1.consoleLogger) {
2236
+ checkEpochProcessed(epochId, channel, log = logger_1.consoleLogger) {
2237
+ return __awaiter(this, void 0, void 0, function* () {
2161
2238
  try {
2162
2239
  const result = yield db
2163
2240
  .selectFrom('epoch')
@@ -2177,8 +2254,8 @@ const pgClient = (config) => {
2177
2254
  }
2178
2255
  });
2179
2256
  },
2180
- checkRecentPaymentActivity() {
2181
- return __awaiter(this, arguments, void 0, function* (lookbackHours = 2, channel = 'both', log = logger_1.consoleLogger) {
2257
+ checkRecentPaymentActivity(lookbackHours = 2, channel = 'both', log = logger_1.consoleLogger) {
2258
+ return __awaiter(this, void 0, void 0, function* () {
2182
2259
  const lookbackTime = new Date(Date.now() - lookbackHours * 60 * 60 * 1000);
2183
2260
  const now = new Date();
2184
2261
  try {