@ercworldio/blockchain-shared 1.0.3-dev.4 → 1.0.3-dev.4-PROJ-1296.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 (137) hide show
  1. package/build/chains/networks_dev copy.json +793 -0
  2. package/build/chains/networks_dev.json +12 -12
  3. package/build/chains/networks_prod-sh.json +40 -4
  4. package/build/chains/networks_prod-yb.json +40 -4
  5. package/build/contracts/Escrow.d.ts +66 -5
  6. package/build/contracts/Escrow.d.ts.map +1 -1
  7. package/build/contracts/Escrow.js +93 -2
  8. package/build/contracts/EscrowErrors.d.ts +85 -1
  9. package/build/contracts/EscrowErrors.d.ts.map +1 -1
  10. package/build/contracts/EscrowErrors.js +59 -14
  11. package/build/contracts/artifacts/Escrow.json +0 -12
  12. package/build/contracts/contract-events/AccessControlEvents.d.ts +12 -2
  13. package/build/contracts/contract-events/AccessControlEvents.d.ts.map +1 -1
  14. package/build/contracts/contract-events/AccessControlEvents.js +29 -5
  15. package/build/contracts/contract-events/EscrowEvents.d.ts +134 -2
  16. package/build/contracts/contract-events/EscrowEvents.d.ts.map +1 -1
  17. package/build/contracts/contract-events/EscrowEvents.js +67 -17
  18. package/build/contracts/contract-events/types/events.d.ts +35 -1
  19. package/build/contracts/contract-events/types/events.d.ts.map +1 -1
  20. package/build/contracts/typechain-types/contracts/escrow/Escrow.d.ts +1 -4
  21. package/build/contracts/typechain-types/contracts/escrow/Escrow.d.ts.map +1 -1
  22. package/build/contracts/typechain-types/contracts/lib/Events.d.ts +1 -4
  23. package/build/contracts/typechain-types/contracts/lib/Events.d.ts.map +1 -1
  24. package/build/contracts/typechain-types/factories/contracts/escrow/EscrowAccessControl__factory.d.ts +1 -1
  25. package/build/contracts/typechain-types/factories/contracts/escrow/EscrowAccessControl__factory.js +1 -1
  26. package/build/contracts/typechain-types/factories/contracts/escrow/Escrow__factory.d.ts +1 -6
  27. package/build/contracts/typechain-types/factories/contracts/escrow/Escrow__factory.d.ts.map +1 -1
  28. package/build/contracts/typechain-types/factories/contracts/escrow/Escrow__factory.js +1 -7
  29. package/build/contracts/typechain-types/factories/contracts/lib/Events__factory.d.ts +1 -6
  30. package/build/contracts/typechain-types/factories/contracts/lib/Events__factory.d.ts.map +1 -1
  31. package/build/contracts/typechain-types/factories/contracts/lib/Events__factory.js +1 -7
  32. package/build/contracts/types/escrow.d.ts +13 -1
  33. package/build/contracts/types/escrow.d.ts.map +1 -1
  34. package/build/contracts/types/escrow.js +4 -0
  35. package/build/entities/AdminOperationThresholds.d.ts +0 -1
  36. package/build/entities/AdminOperationThresholds.d.ts.map +1 -1
  37. package/build/entities/AdminOperationThresholds.js +1 -5
  38. package/build/entities/AdminWithdrawal.d.ts +20 -0
  39. package/build/entities/AdminWithdrawal.d.ts.map +1 -0
  40. package/build/entities/AdminWithdrawal.js +88 -0
  41. package/build/entities/ClaimJob.d.ts +1 -0
  42. package/build/entities/ClaimJob.d.ts.map +1 -1
  43. package/build/entities/ClaimJob.js +4 -0
  44. package/build/entities/CryptoOperationType.d.ts +18 -0
  45. package/build/entities/CryptoOperationType.d.ts.map +1 -0
  46. package/build/entities/CryptoOperationType.js +50 -0
  47. package/build/entities/EscrowRoles.js +1 -1
  48. package/build/entities/GlobalTimelock.d.ts +0 -1
  49. package/build/entities/GlobalTimelock.d.ts.map +1 -1
  50. package/build/entities/GlobalTimelock.js +1 -5
  51. package/build/entities/GranularTimelock .d.ts +0 -1
  52. package/build/entities/GranularTimelock .d.ts.map +1 -1
  53. package/build/entities/GranularTimelock .js +0 -4
  54. package/build/entities/GranularTimelock.d.ts +11 -0
  55. package/build/entities/GranularTimelock.d.ts.map +1 -0
  56. package/build/entities/GranularTimelock.js +52 -0
  57. package/build/entities/RoleHash.js +1 -1
  58. package/build/entities/ScheduleTransactionJob.d.ts +23 -0
  59. package/build/entities/ScheduleTransactionJob.d.ts.map +1 -0
  60. package/build/entities/ScheduleTransactionJob.js +89 -0
  61. package/build/entities/ScheduleTransactionJobHistory.d.ts +17 -0
  62. package/build/entities/ScheduleTransactionJobHistory.d.ts.map +1 -0
  63. package/build/entities/ScheduleTransactionJobHistory.js +66 -0
  64. package/build/entities/TokenExecutionThresholds.d.ts +0 -1
  65. package/build/entities/TokenExecutionThresholds.d.ts.map +1 -1
  66. package/build/entities/TokenExecutionThresholds.js +1 -5
  67. package/build/entities/WithdrawalCommitment.d.ts +15 -0
  68. package/build/entities/WithdrawalCommitment.d.ts.map +1 -0
  69. package/build/entities/WithdrawalCommitment.js +64 -0
  70. package/build/entities/index.d.ts +22 -0
  71. package/build/entities/index.d.ts.map +1 -0
  72. package/build/entities/index.js +37 -0
  73. package/build/errors/errors.d.ts +30 -0
  74. package/build/errors/errors.d.ts.map +1 -1
  75. package/build/errors/errors.js +64 -2
  76. package/build/index.d.ts +6 -9
  77. package/build/index.d.ts.map +1 -1
  78. package/build/index.js +22 -11
  79. package/build/interfaces.d.ts +2 -2
  80. package/build/interfaces.d.ts.map +1 -1
  81. package/build/services/AlchemyWebhooks.d.ts.map +1 -1
  82. package/build/services/AlchemyWebhooks.js +33 -29
  83. package/build/services/AzureEventHubHandler.d.ts.map +1 -1
  84. package/build/services/AzureEventHubHandler.js +17 -5
  85. package/build/services/ClaimJobService.d.ts +5 -2
  86. package/build/services/ClaimJobService.d.ts.map +1 -1
  87. package/build/services/ClaimJobService.js +135 -24
  88. package/build/services/ClaimJobServiceStatic.d.ts +9 -0
  89. package/build/services/ClaimJobServiceStatic.d.ts.map +1 -0
  90. package/build/services/ClaimJobServiceStatic.js +54 -0
  91. package/build/services/SweepJobService.d.ts +3 -3
  92. package/build/services/SweepJobService.d.ts.map +1 -1
  93. package/build/services/SweepJobService.js +7 -12
  94. package/build/services/WithdrawalService.d.ts +10 -0
  95. package/build/services/WithdrawalService.d.ts.map +1 -0
  96. package/build/services/WithdrawalService.js +36 -0
  97. package/build/services/db/multisig/MultisigService.d.ts +31 -0
  98. package/build/services/db/multisig/MultisigService.d.ts.map +1 -0
  99. package/build/services/db/multisig/MultisigService.js +134 -0
  100. package/build/services/db/roles/ContractRoles.d.ts +2 -2
  101. package/build/services/db/roles/ContractRoles.d.ts.map +1 -1
  102. package/build/services/db/roles/ContractRoles.js +18 -12
  103. package/build/services/db/timelock/ScheduleTransactionJobHistoryService.d.ts +14 -0
  104. package/build/services/db/timelock/ScheduleTransactionJobHistoryService.d.ts.map +1 -0
  105. package/build/services/db/timelock/ScheduleTransactionJobHistoryService.js +63 -0
  106. package/build/services/db/timelock/ScheduleTransactionService.d.ts +32 -0
  107. package/build/services/db/timelock/ScheduleTransactionService.d.ts.map +1 -0
  108. package/build/services/db/timelock/ScheduleTransactionService.js +212 -0
  109. package/build/services/types/azure_event_hub_handler.d.ts +9 -1
  110. package/build/services/types/azure_event_hub_handler.d.ts.map +1 -1
  111. package/build/services/types/azure_event_hub_handler.js +8 -0
  112. package/build/services/types/claim.d.ts +17 -1
  113. package/build/services/types/claim.d.ts.map +1 -1
  114. package/build/services/types/claim_job_service.d.ts +9 -1
  115. package/build/services/types/claim_job_service.d.ts.map +1 -1
  116. package/build/services/types/db/index.d.ts +3 -0
  117. package/build/services/types/db/index.d.ts.map +1 -0
  118. package/build/services/types/db/index.js +18 -0
  119. package/build/services/types/db/multisig_service.d.ts +154 -0
  120. package/build/services/types/db/multisig_service.d.ts.map +1 -0
  121. package/build/services/types/db/multisig_service.js +2 -0
  122. package/build/services/types/db/timelock.d.ts +28 -0
  123. package/build/services/types/db/timelock.d.ts.map +1 -0
  124. package/build/services/types/db/timelock.js +2 -0
  125. package/build/services/types/db/withdrawal_service.d.ts +16 -0
  126. package/build/services/types/db/withdrawal_service.d.ts.map +1 -0
  127. package/build/services/types/db/withdrawal_service.js +2 -0
  128. package/build/services/types/index.d.ts +1 -0
  129. package/build/services/types/index.d.ts.map +1 -1
  130. package/build/services/types/index.js +1 -0
  131. package/build/services/types/watchdog.d.ts +9 -0
  132. package/build/services/types/watchdog.d.ts.map +1 -0
  133. package/build/services/types/watchdog.js +2 -0
  134. package/build/utils/custodial.d.ts +8 -0
  135. package/build/utils/custodial.d.ts.map +1 -1
  136. package/build/utils/custodial.js +23 -2
  137. package/package.json +6 -3
@@ -32,9 +32,17 @@ class AzureEventHubHandler {
32
32
  Withdrawal: this.config.config.withdrawalEventHubName,
33
33
  LowReserves: 'eventsstream',
34
34
  CoverageInfo: 'eventsstream',
35
- RoleGranted: this.config.config.rolesEventHubName,
36
- RoleRevoked: this.config.config.rolesEventHubName,
35
+ RoleGranted: 'rawtransferlogs',
36
+ RoleRevoked: 'rawtransferlogs',
37
37
  TransferLogsRaw: this.config.config.transferLogsRawEventHubName,
38
+ WithdrawalExecuted: 'rawtransferlogs',
39
+ WithdrawalScheduled: 'rawtransferlogs',
40
+ WithdrawalCancelled: 'rawtransferlogs',
41
+ SetTimelockGranular: 'rawtransferlogs',
42
+ SetTokenTimelock: 'rawtransferlogs',
43
+ ConfigureAdminMultisig: 'rawtransferlogs',
44
+ ConfigureTokenMultisig: 'rawtransferlogs',
45
+ AdminWithdraw: 'rawtransferlogs'
38
46
  };
39
47
  this.logger = (0, Logger_1.createLogger)("AzureEventHubHandler", this.config.pipelineConfig.azureAppName);
40
48
  this.initializeEventHubClients();
@@ -69,10 +77,10 @@ class AzureEventHubHandler {
69
77
  */
70
78
  sendEvent(eventData) {
71
79
  return __awaiter(this, void 0, void 0, function* () {
72
- const eventHubName = this.event_name_to_event_hub_name[eventData.eventName];
80
+ let eventHubName = this.event_name_to_event_hub_name[eventData.eventName];
73
81
  if (!eventHubName) {
74
- this.logger.info(`[AzureEventHubHandler]: Event hub name not found for ${eventData.eventName} event. Skipping...`);
75
- return false;
82
+ this.logger.info(`[AzureEventHubHandler]: Event hub name not found for ${eventData.eventName} event. Using 'rawtransferlogs'`);
83
+ eventHubName = this.config.config.transferLogsRawEventHubName ? this.config.config.transferLogsRawEventHubName : 'rawtransferlogs';
76
84
  }
77
85
  const clientDefault = new event_hubs_1.EventHubProducerClient(this.config.config.azureConnectionStringNotifications, eventHubName, { retryOptions: { retryDelayInMs: 10000 } });
78
86
  const eventDataBatch = yield clientDefault.createBatch();
@@ -127,6 +135,10 @@ class AzureEventHubHandler {
127
135
  getEventHubClient(eventName) {
128
136
  return __awaiter(this, void 0, void 0, function* () {
129
137
  try {
138
+ // Fallback to rawtransferlogs if event name is not mapped to a event hub client
139
+ if (!this.event_name_to_event_hub_name[eventName]) {
140
+ return this.eventHubClients.get(this.config.config.transferLogsRawEventHubName || 'rawtransferlogs');
141
+ }
130
142
  return this.eventHubClients.get(this.event_name_to_event_hub_name[eventName]);
131
143
  }
132
144
  catch (error) {
@@ -2,7 +2,7 @@ import { ClaimJobs } from "../entities/ClaimJob";
2
2
  import { JobStatus } from "./types/claim";
3
3
  import { ChainId } from "../interfaces";
4
4
  import { IDatabasePool } from "../interfaces/database";
5
- import { ClaimJobLockMetadata, ClaimSearchFilters, CreateClaimJobsPayload, MarkCompletePayload, Paginated } from "./types/claim_job_service";
5
+ import { ClaimJobLockMetadata, ClaimJobWithDetails, ClaimSearchFilters, CreateClaimJobsPayload, MarkCompletePayload, Paginated } from "./types/claim_job_service";
6
6
  declare class ClaimJobsService {
7
7
  private dbPool;
8
8
  private errors;
@@ -12,7 +12,10 @@ declare class ClaimJobsService {
12
12
  private get_repo;
13
13
  private get_history_repo;
14
14
  private paginate;
15
- get_available_jobs: (limit?: number, job_ttl_s?: number, lock_metadata?: ClaimJobLockMetadata) => Promise<ClaimJobs[]>;
15
+ get_available_jobs_no_timelock_deprecated: (limit?: number, job_ttl_s?: number, max_retry_count?: number, lock_metadata?: ClaimJobLockMetadata) => Promise<ClaimJobWithDetails[]>;
16
+ get_available_jobs_no_timelock: (limit?: number, job_ttl_s?: number, max_retry_count?: number, lock_metadata?: ClaimJobLockMetadata) => Promise<ClaimJobWithDetails[]>;
17
+ get_available_jobs_with_timelock_deprecated: (limit?: number, job_ttl_s?: number, max_retry_count?: number, lock_metadata?: ClaimJobLockMetadata) => Promise<ClaimJobWithDetails[]>;
18
+ get_available_jobs_with_timelock: (limit?: number, job_ttl_s?: number, max_retry_count?: number, lock_metadata?: ClaimJobLockMetadata) => Promise<ClaimJobWithDetails[]>;
16
19
  requeue_expired_jobs: (current_status: JobStatus, ttl_seconds: number, limit: number, lock_owner: string, lock_reason: string, max_retries: number) => Promise<ClaimJobs[]>;
17
20
  get_stale_jobs: (status: JobStatus, stale_time_mins: number, ttl_mins: number, lock_owner: string, lock_reason: string, limit?: number) => Promise<ClaimJobs[]>;
18
21
  get_stale_jobs_deprecated: (status: JobStatus, stale_time_mins: number, limit?: number) => Promise<ClaimJobs[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"ClaimJobService.d.ts","sourceRoot":"","sources":["../../src/services/ClaimJobService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClaimJobService.d.ts","sourceRoot":"","sources":["../../src/services/ClaimJobService.ts"],"names":[],"mappings":"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"}
@@ -55,41 +55,151 @@ class ClaimJobsService {
55
55
  items: items || []
56
56
  };
57
57
  });
58
- this.get_available_jobs = (...args_1) => __awaiter(this, [...args_1], void 0, function* (limit = 10, job_ttl_s = 120, lock_metadata = { lock_owner: "claim-worker", lock_reason: "process_queued" }) {
58
+ this.get_available_jobs_no_timelock_deprecated = (...args_1) => __awaiter(this, [...args_1], void 0, function* (limit = 10, job_ttl_s = 120, max_retry_count = 5, lock_metadata = { lock_owner: "claim-worker", lock_reason: "process_queued" }) {
59
+ var _a;
60
+ const repo = this.get_repo();
61
+ const result = yield repo.query(`SELECT accounting.fn_get_available_claim_jobs_no_timelock($1::int, $2::int, $3::int, $4::text, $5::text)`, [limit, job_ttl_s, max_retry_count, lock_metadata.lock_owner, lock_metadata.lock_reason]);
62
+ return (_a = result[0].fn_get_available_claim_jobs_no_timelock) !== null && _a !== void 0 ? _a : [];
63
+ });
64
+ this.get_available_jobs_no_timelock = (...args_1) => __awaiter(this, [...args_1], void 0, function* (limit = 10, job_ttl_s = 120, max_retry_count = 5, lock_metadata = { lock_owner: "claim-worker", lock_reason: "process_queued" }) {
59
65
  const repo = this.get_repo();
60
- const ttlSeconds = job_ttl_s;
61
- const batchGroupId = (0, uuid_1.v4)();
62
66
  const rows = yield repo.query(`
63
67
  WITH candidates AS (
64
68
  SELECT id
65
69
  FROM accounting.claim_jobs
66
70
  WHERE job_status = 'queued'
71
+ AND has_timelock = false
67
72
  AND (lock_expires_at IS NULL OR lock_expires_at < now())
73
+ AND retry_count < $6
68
74
  ORDER BY blockchain, chain_id ASC
69
75
  LIMIT $1
70
76
  FOR UPDATE SKIP LOCKED
77
+ ),
78
+ updated AS (
79
+ UPDATE accounting.claim_jobs cj
80
+ SET
81
+ job_status = 'processing',
82
+ locked_at = now(),
83
+ lock_expires_at = now() + ($2 || ' seconds')::interval,
84
+ batch_group_id = $3,
85
+ metadata = jsonb_set(
86
+ jsonb_set(
87
+ coalesce(cj.metadata, '{}'::jsonb),
88
+ '{lock_owner}', to_jsonb($4::text)
89
+ ),
90
+ '{lock_reason}', to_jsonb($5::text)
91
+ ),
92
+ updated_at = now()
93
+ FROM candidates c
94
+ WHERE cj.id = c.id
95
+ RETURNING cj.*
71
96
  )
72
- UPDATE accounting.claim_jobs cj
73
- SET
74
- job_status = 'processing',
75
- locked_at = now(),
76
- lock_expires_at = now() + ($2 || ' seconds')::interval,
77
- batch_group_id = $3,
78
- metadata = jsonb_set(
79
- jsonb_set(
80
- coalesce(cj.metadata, '{}'::jsonb),
81
- '{lock_owner}',
82
- to_jsonb($4::text)
83
- ),
84
- '{lock_reason}',
85
- to_jsonb($5::text)
86
- ),
87
- updated_at = now()
88
- FROM candidates c
89
- WHERE cj.id = c.id
90
- RETURNING cj.*;
91
- `, [limit, ttlSeconds, batchGroupId, lock_metadata.lock_owner, lock_metadata.lock_reason]);
92
- return rows[0];
97
+ SELECT
98
+ u.*,
99
+ NULL::text AS commitment_hash,
100
+ NULL::timestamptz AS execute_at,
101
+ (
102
+ SELECT COALESCE(json_agg(json_build_object(
103
+ 'name', COALESCE(cr.role_alias, ''),
104
+ 'signerAddress', cs.signer_address,
105
+ 'contractAddress', cs.contract_address,
106
+ 'createdAt', cs.created_at,
107
+ 'updatedAt', cs.updated_at,
108
+ 'operationType', cs.operation_type,
109
+ 'v', cs.v,
110
+ 'r', cs.r,
111
+ 's', cs.s
112
+ )), '[]'::json)
113
+ FROM multisig.crypto_signatures cs
114
+ LEFT JOIN multisig.crypto_escrow_roles cer
115
+ ON LOWER(cer.wallet_address) = LOWER(cs.signer_address)
116
+ AND LOWER(cer.blockchain) = LOWER(cs.blockchain)
117
+ AND cer.chain_id = cs.chain_id
118
+ AND LOWER(cer.contract_address) = LOWER(cs.contract_address)
119
+ LEFT JOIN multisig.crypto_role cr ON cr.id = cer.role_id
120
+ WHERE cs.reference_id = u.request_id
121
+ AND cs.v IS NOT NULL
122
+ AND cs.r IS NOT NULL
123
+ AND cs.s IS NOT NULL
124
+ ) AS multisig_signatures
125
+ FROM updated u;
126
+ `, [limit, job_ttl_s, (0, uuid_1.v4)(), lock_metadata.lock_owner, lock_metadata.lock_reason, max_retry_count]);
127
+ return rows;
128
+ });
129
+ this.get_available_jobs_with_timelock_deprecated = (...args_1) => __awaiter(this, [...args_1], void 0, function* (limit = 10, job_ttl_s = 120, max_retry_count = 5, lock_metadata = { lock_owner: "claim-worker", lock_reason: "process_queued" }) {
130
+ var _a;
131
+ const repo = this.get_repo();
132
+ const result = yield repo.query(`SELECT accounting.fn_get_available_claim_jobs_with_timelock($1::int, $2::int, $3::int, $4::text, $5::text)`, [limit, job_ttl_s, max_retry_count, lock_metadata.lock_owner, lock_metadata.lock_reason]);
133
+ return (_a = result[0].fn_get_available_claim_jobs_with_timelock) !== null && _a !== void 0 ? _a : [];
134
+ });
135
+ this.get_available_jobs_with_timelock = (...args_1) => __awaiter(this, [...args_1], void 0, function* (limit = 10, job_ttl_s = 120, max_retry_count = 5, lock_metadata = { lock_owner: "claim-worker", lock_reason: "process_queued" }) {
136
+ const repo = this.get_repo();
137
+ const rows = yield repo.query(`
138
+ WITH scheduled_status AS (
139
+ SELECT id FROM multisig.crypto_commitment_statuses WHERE status = 'scheduled'
140
+ ),
141
+ candidates AS (
142
+ SELECT cj.id
143
+ FROM accounting.claim_jobs cj
144
+ JOIN multisig.crypto_withdrawal_commitment cwc ON cwc.request_id = cj.request_id
145
+ JOIN scheduled_status ss ON cwc.status_id = ss.id
146
+ WHERE cj.job_status = 'queued'
147
+ AND cj.has_timelock = true
148
+ AND (cj.lock_expires_at IS NULL OR cj.lock_expires_at < now())
149
+ AND cj.retry_count < $6
150
+ AND cwc.execute_at < now()
151
+ ORDER BY cj.blockchain, cj.chain_id ASC
152
+ LIMIT $1
153
+ FOR UPDATE SKIP LOCKED
154
+ ),
155
+ updated AS (
156
+ UPDATE accounting.claim_jobs cj
157
+ SET
158
+ job_status = 'processing',
159
+ locked_at = now(),
160
+ lock_expires_at = now() + ($2 || ' seconds')::interval,
161
+ batch_group_id = $3,
162
+ metadata = jsonb_set(
163
+ jsonb_set(
164
+ coalesce(cj.metadata, '{}'::jsonb),
165
+ '{lock_owner}', to_jsonb($4::text)
166
+ ),
167
+ '{lock_reason}', to_jsonb($5::text)
168
+ ),
169
+ updated_at = now()
170
+ FROM candidates c
171
+ WHERE cj.id = c.id
172
+ RETURNING cj.*
173
+ )
174
+ SELECT
175
+ u.*,
176
+ cwc.commitment_hash,
177
+ cwc.execute_at,
178
+ (
179
+ SELECT COALESCE(json_agg(json_build_object(
180
+ 'name', COALESCE(cr.role_alias, ''),
181
+ 'signerAddress', cs.signer_address,
182
+ 'contractAddress', cs.contract_address,
183
+ 'createdAt', cs.created_at,
184
+ 'updatedAt', cs.updated_at,
185
+ 'operationType', cs.operation_type,
186
+ 'v', cs.v,
187
+ 'r', cs.r,
188
+ 's', cs.s
189
+ )), '[]'::json)
190
+ FROM multisig.crypto_signatures cs
191
+ LEFT JOIN multisig.crypto_escrow_roles cer
192
+ ON LOWER(cer.wallet_address) = LOWER(cs.signer_address)
193
+ AND LOWER(cer.blockchain) = LOWER(cs.blockchain)
194
+ AND cer.chain_id = cs.chain_id
195
+ AND LOWER(cer.contract_address) = LOWER(cs.contract_address)
196
+ LEFT JOIN multisig.crypto_role cr ON cr.id = cer.role_id
197
+ WHERE cs.reference_id = u.request_id
198
+ ) AS multisig_signatures
199
+ FROM updated u
200
+ LEFT JOIN multisig.crypto_withdrawal_commitment cwc ON cwc.request_id = u.request_id;
201
+ `, [limit, job_ttl_s, (0, uuid_1.v4)(), lock_metadata.lock_owner, lock_metadata.lock_reason, max_retry_count]);
202
+ return rows;
93
203
  });
94
204
  this.requeue_expired_jobs = (current_status, ttl_seconds, limit, lock_owner, lock_reason, max_retries) => __awaiter(this, void 0, void 0, function* () {
95
205
  const rows = yield this.get_repo().query(`
@@ -400,6 +510,7 @@ class ClaimJobsService {
400
510
  entity.token = payload.token;
401
511
  entity.decimals = payload.decimals;
402
512
  entity.job_status = "queued";
513
+ entity.has_timelock = payload.has_timelock;
403
514
  return entity;
404
515
  };
405
516
  this.dbPool = dbPool;
@@ -0,0 +1,9 @@
1
+ import { Pool } from "pg";
2
+ import { ClaimJobs } from "../entities";
3
+ import { RequeueJobConfiguration } from "./types/watchdog";
4
+ import { JobStatus } from "./types";
5
+ declare class ClaimJobServiceStatic {
6
+ static requeue_expired_jobs: (pool: Pool, data: RequeueJobConfiguration<JobStatus>) => Promise<ClaimJobs[]>;
7
+ }
8
+ export default ClaimJobServiceStatic;
9
+ //# sourceMappingURL=ClaimJobServiceStatic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaimJobServiceStatic.d.ts","sourceRoot":"","sources":["../../src/services/ClaimJobServiceStatic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,cAAM,qBAAqB;IACzB,MAAM,CAAC,oBAAoB,GACzB,MAAM,IAAI,EACV,MAAM,uBAAuB,CAAC,SAAS,CAAC,KACvC,OAAO,CAAC,SAAS,EAAE,CAAC,CAwCrB;CACH;AAED,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var _a;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ class ClaimJobServiceStatic {
14
+ }
15
+ _a = ClaimJobServiceStatic;
16
+ ClaimJobServiceStatic.requeue_expired_jobs = (pool, data) => __awaiter(void 0, void 0, void 0, function* () {
17
+ const result = yield pool.query(`
18
+ WITH expired AS (
19
+ SELECT id
20
+ FROM accounting.claim_jobs
21
+ WHERE job_status = $4
22
+ AND (
23
+ lock_expires_at IS NULL
24
+ OR lock_expires_at < now()
25
+ )
26
+ AND retry_count < $5
27
+ ORDER BY lock_expires_at ASC
28
+ LIMIT $1
29
+ FOR UPDATE SKIP LOCKED
30
+ )
31
+ UPDATE accounting.claim_jobs cj
32
+ SET
33
+ job_status = 'queued',
34
+ locked_at = NULL,
35
+ lock_expires_at = NULL,
36
+ metadata = jsonb_set(
37
+ jsonb_set(
38
+ coalesce(metadata, '{}'::jsonb),
39
+ '{requeued_by}',
40
+ to_jsonb($2::text),
41
+ true
42
+ ),
43
+ '{requeue_reason}',
44
+ to_jsonb($3::text),
45
+ true
46
+ ),
47
+ updated_at = now()
48
+ FROM expired e
49
+ WHERE cj.id = e.id
50
+ RETURNING cj.*;
51
+ `, [data.limit, data.lock_owner, data.lock_reason, data.watch_status, data.max_retries]);
52
+ return result.rows;
53
+ });
54
+ exports.default = ClaimJobServiceStatic;
@@ -21,9 +21,9 @@ WHERE job_status IN ('pending', 'queued');
21
21
  */
22
22
  createSweepJob(userId: number, blockchain: string, chainId: string, address: string, parentIndex: number, childIndex: number, token: string, decimals: number, balance: bigint): Promise<SweepJob>;
23
23
  markBatchComplete(sweepResults: SweepResult[]): Promise<void>;
24
- findAndLockQueuedBatchJobs(blockchain: BlockchainType, limit: number | undefined, lock_owner: string, lock_expiry_duration_min?: number, max_retries?: number): Promise<SweepJob[]>;
25
- findAndLockQueuedJobs(blockchain: BlockchainType, limit: number | undefined, lock_owner: string, lock_expiry_duration_min?: number, max_retries?: number): Promise<SweepJob[]>;
26
- findAndLockPendingJobs(blockchain: BlockchainType, lock_owner: string, lock_interval_mins?: number, limit?: number, max_retries?: number): Promise<SweepJob[]>;
24
+ findAndLockQueuedBatchJobs(blockchain: BlockchainType, limit: number | undefined, lock_owner: string, lock_expiry_duration_min?: number): Promise<SweepJob[]>;
25
+ findAndLockQueuedJobs(blockchain: BlockchainType, limit: number | undefined, lock_owner: string, lock_expiry_duration_min?: number): Promise<SweepJob[]>;
26
+ findAndLockPendingJobs(blockchain: BlockchainType, lock_owner: string, lock_interval_mins?: number, limit?: number): Promise<SweepJob[]>;
27
27
  createSweepJobDeprec(userId: number, blockchain: string, chainId: string, address: string, parentIndex: number, childIndex: number, token: string, decimals: number, balance: bigint): Promise<SweepJob>;
28
28
  dispatchAddSweepJobWithBalanceCheck(wallet_id: number, blockchain: BlockchainType, user_id: number, address: string, parentIndex: number, childIndex: number, is_full_sweep: boolean): Promise<void>;
29
29
  batchCreateSweepJob(user_id: number, address: string, parent_index: number, child_index: number, need_sweep: DepositWalletBalance[]): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"SweepJobService.d.ts","sourceRoot":"","sources":["../../src/services/SweepJobService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SweepJobService.d.ts","sourceRoot":"","sources":["../../src/services/SweepJobService.ts"],"names":[],"mappings":"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"}
@@ -222,9 +222,8 @@ class SweepJobService {
222
222
  const repo = this.getRepo();
223
223
  yield repo.query(`
224
224
  UPDATE usersmanagement.sweep_jobs
225
- SET
225
+ SET
226
226
  job_status = $1,
227
- retry_count = retry_count + 1,
228
227
  updated_at = now()
229
228
  WHERE id = ANY($2::bigint[])
230
229
  `, [
@@ -242,7 +241,6 @@ class SweepJobService {
242
241
  SET
243
242
  job_status = $1,
244
243
  error_message = data.error_message,
245
- retry_count = j.retry_count + 1,
246
244
  updated_at = now()
247
245
  FROM (
248
246
  SELECT
@@ -461,7 +459,7 @@ WHERE job_status IN ('pending', 'queued');
461
459
  }
462
460
  // Get batch of jobs for low priority sweeps (midnight worker)
463
461
  findAndLockQueuedBatchJobs(blockchain_1) {
464
- return __awaiter(this, arguments, void 0, function* (blockchain, limit = 100, lock_owner, lock_expiry_duration_min = 30, max_retries = 5) {
462
+ return __awaiter(this, arguments, void 0, function* (blockchain, limit = 100, lock_owner, lock_expiry_duration_min = 30) {
465
463
  const repo = this.getRepo();
466
464
  const rows = yield repo.query(`
467
465
  WITH locked AS (
@@ -470,7 +468,6 @@ WHERE job_status IN ('pending', 'queued');
470
468
  WHERE job_status = 'queued'
471
469
  AND blockchain = $1
472
470
  AND sweep_before IS NULL
473
- AND retry_count < $5
474
471
  AND (locked_at IS NULL OR lock_expires_at < now())
475
472
  ORDER BY created_at ASC
476
473
  LIMIT $2
@@ -485,13 +482,13 @@ WHERE job_status IN ('pending', 'queued');
485
482
  FROM locked
486
483
  WHERE j.id = locked.id
487
484
  RETURNING j.*;
488
- `, [blockchain, limit, lock_owner, lock_expiry_duration_min, max_retries]);
485
+ `, [blockchain, limit, lock_owner, lock_expiry_duration_min]);
489
486
  return rows[0];
490
487
  });
491
488
  }
492
489
  // Pull jobs ready for transfer by sweep worker
493
490
  findAndLockQueuedJobs(blockchain_1) {
494
- return __awaiter(this, arguments, void 0, function* (blockchain, limit = 100, lock_owner, lock_expiry_duration_min = 5, max_retries = 5) {
491
+ return __awaiter(this, arguments, void 0, function* (blockchain, limit = 100, lock_owner, lock_expiry_duration_min = 5) {
495
492
  const repo = this.getRepo();
496
493
  const rows = yield repo.query(`
497
494
  WITH locked AS (
@@ -500,7 +497,6 @@ WHERE job_status IN ('pending', 'queued');
500
497
  WHERE job_status = 'queued'
501
498
  AND blockchain = $1
502
499
  AND sweep_before <= now()
503
- AND retry_count < $5
504
500
  AND (locked_at IS NULL OR lock_expires_at < now())
505
501
  ORDER BY sweep_before ASC
506
502
  LIMIT $2
@@ -514,13 +510,13 @@ WHERE job_status IN ('pending', 'queued');
514
510
  FROM locked
515
511
  WHERE j.id = locked.id
516
512
  RETURNING j.*;
517
- `, [blockchain, limit, lock_owner, lock_expiry_duration_min, max_retries]);
513
+ `, [blockchain, limit, lock_owner, lock_expiry_duration_min]);
518
514
  return rows[0];
519
515
  });
520
516
  }
521
517
  // Pull jobs to ensure enough gas cost by funding worker
522
518
  findAndLockPendingJobs(blockchain_1, lock_owner_1) {
523
- return __awaiter(this, arguments, void 0, function* (blockchain, lock_owner, lock_interval_mins = 5, limit = 100, max_retries = 5) {
519
+ return __awaiter(this, arguments, void 0, function* (blockchain, lock_owner, lock_interval_mins = 5, limit = 100) {
524
520
  const repo = this.getRepo();
525
521
  const rows = yield repo.query(`
526
522
  WITH locked AS (
@@ -528,7 +524,6 @@ WHERE job_status IN ('pending', 'queued');
528
524
  FROM usersmanagement.sweep_jobs
529
525
  WHERE job_status = 'pending'
530
526
  AND blockchain = $1
531
- AND retry_count < $5
532
527
  AND (locked_at IS NULL OR lock_expires_at < now())
533
528
  ORDER BY created_at
534
529
  LIMIT $2
@@ -541,7 +536,7 @@ WHERE job_status IN ('pending', 'queued');
541
536
  FROM locked
542
537
  WHERE j.id = locked.id
543
538
  RETURNING j.*;
544
- `, [blockchain, limit, lock_owner, lock_interval_mins, max_retries]);
539
+ `, [blockchain, limit, lock_owner, lock_interval_mins]);
545
540
  return rows[0];
546
541
  });
547
542
  }
@@ -0,0 +1,10 @@
1
+ import { Pool } from "pg";
2
+ import { WithdrawRequestDetails } from "./types";
3
+ import { WithdrawalCommitment } from "../entities";
4
+ declare class WithdrawalService {
5
+ static get_crypto_withdrawal_request: (pool: Pool, request_id: number) => Promise<WithdrawRequestDetails | null>;
6
+ static get_withdrawal_commitments: (pool: Pool, blockchain: string, chainId: string, escrowAddress: string) => Promise<WithdrawalCommitment[]>;
7
+ static get_withdrawal_commitment: (pool: Pool, request_id: number) => Promise<WithdrawalCommitment>;
8
+ }
9
+ export default WithdrawalService;
10
+ //# sourceMappingURL=WithdrawalService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WithdrawalService.d.ts","sourceRoot":"","sources":["../../src/services/WithdrawalService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAoB,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAErE,cAAM,iBAAiB;IACnB,MAAM,CAAC,6BAA6B,GAAU,MAAM,IAAI,EAAE,YAAY,MAAM,4CAQ3E;IAED,MAAM,CAAC,0BAA0B,GAAU,MAAM,IAAI,EAAE,YAAY,MAAM,EAAE,SAAS,MAAM,EAAE,eAAe,MAAM,qCAUhH;IAED,MAAM,CAAC,yBAAyB,GAAU,MAAM,IAAI,EAAE,YAAY,MAAM,mCAUvE;CACJ;AAED,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var _a;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ class WithdrawalService {
14
+ }
15
+ _a = WithdrawalService;
16
+ WithdrawalService.get_crypto_withdrawal_request = (pool, request_id) => __awaiter(void 0, void 0, void 0, function* () {
17
+ const result = yield pool.query(`
18
+ SELECT accounting.fn_get_crypto_withdrawal_details($1::bigint);
19
+ `, [request_id]);
20
+ return result.rows[0].fn_get_crypto_withdrawal_details;
21
+ });
22
+ WithdrawalService.get_withdrawal_commitments = (pool, blockchain, chainId, escrowAddress) => __awaiter(void 0, void 0, void 0, function* () {
23
+ const status = "scheduled";
24
+ const result = yield pool.query(`
25
+ SELECT multisig.fn_get_withdrawal_commitments($1::text,$2::text,$3::text,$4::text);
26
+ `, [blockchain, chainId, escrowAddress, status]);
27
+ return result.rows[0].fn_get_withdrawal_commitments;
28
+ });
29
+ WithdrawalService.get_withdrawal_commitment = (pool, request_id) => __awaiter(void 0, void 0, void 0, function* () {
30
+ const result = yield pool.query(`
31
+ SELECT * from multisig.crypto_withdrawal_commitment
32
+ WHERE request_id = $1::bigint
33
+ `, [request_id]);
34
+ return result.rows[0];
35
+ });
36
+ exports.default = WithdrawalService;
@@ -0,0 +1,31 @@
1
+ import { Pool } from "pg";
2
+ import { GetAdminOperationThreshold, UpsertAdminOperationThreshold, GetGlobalTimelock, UpsertGlobalTimelock, GetGranularTimelock, UpsertGranularTimelock, GetTokenExecutionThreshold, UpsertTokenExecutionThreshold, FnWithdrawalScheduledPayload, FnWithdrawalScheduledResult, FnWithdrawalExecutedResult, FnWithdrawalExecutedPayload, FnWithdrawalCancelledPayload, FnWithdrawalCancelledResult, FnGetWithdrawalCommitmentsResult, FnGetWithdrawalCommitmentsPayload } from "../../types";
3
+ import { OperationType } from "../../../contracts/types/escrow";
4
+ /**
5
+ * Adapter class for interfacing the DB functions
6
+ * related to escrow multisig threshold execution settings
7
+ */
8
+ declare class MultisigService {
9
+ /** Returns all admin operation signature thresholds for the given escrow. */
10
+ static fn_get_admin_operation_thresholds(pool: Pool, blockchain: string, chainId: string, escrow_address: string): Promise<GetAdminOperationThreshold[]>;
11
+ /** Inserts or updates the manager/executive signature thresholds for the given escrow. */
12
+ static fn_upsert_admin_operation_threshold(pool: Pool, blockchain: string, chainId: string, escrow_address: string, operation_type: OperationType, sigs_manager: number, sigs_executive: number): Promise<UpsertAdminOperationThreshold>;
13
+ /** Returns all global timelock configs for the given escrow. */
14
+ static fn_get_global_timelock(pool: Pool, blockchain: string, chainId: string, escrow_address: string): Promise<GetGlobalTimelock[]>;
15
+ /** Inserts or updates the global timelock durations for a token/escrow pair. */
16
+ static fn_upsert_global_timelock(pool: Pool, blockchain: string, chainId: string, escrow_address: string, token_address: string, threshold_amount: number, duration_below_seconds: number, duration_above_seconds: number): Promise<UpsertGlobalTimelock>;
17
+ /** Returns all granular timelock configs for the given escrow. */
18
+ static fn_get_granular_timelock(pool: Pool, blockchain: string, chainId: string, escrow_address: string): Promise<GetGranularTimelock[]>;
19
+ /** Inserts or updates the timelock duration for a specific receiver address. */
20
+ static fn_upsert_granular_timelock(pool: Pool, blockchain: string, chainId: string, escrow_address: string, receiver_address: string, duration_seconds: number): Promise<UpsertGranularTimelock>;
21
+ /** Returns all per-token execution signature thresholds for the given escrow. */
22
+ static fn_get_token_execution_thresholds(pool: Pool, blockchain: string, chainId: string, escrow_address: string): Promise<GetTokenExecutionThreshold[]>;
23
+ /** Inserts or updates the above/below signature thresholds for a token/escrow pair. */
24
+ static fn_upsert_token_execution_threshold(pool: Pool, blockchain: string, chainId: string, escrow_address: string, token_address: string, threshold_amount: number, sigs_executive_below: number, sigs_executive_above: number, sigs_manager_below: number, sigs_manager_above: number): Promise<UpsertTokenExecutionThreshold>;
25
+ static fn_get_withdrawal_commitments(pool: Pool, data: FnGetWithdrawalCommitmentsPayload): Promise<FnGetWithdrawalCommitmentsResult[]>;
26
+ static fn_withdrawal_scheduled(pool: Pool, data: FnWithdrawalScheduledPayload): Promise<FnWithdrawalScheduledResult>;
27
+ static fn_withdrawal_executed(pool: Pool, data: FnWithdrawalExecutedPayload): Promise<FnWithdrawalExecutedResult>;
28
+ static fn_withdrawal_cancelled(pool: Pool, data: FnWithdrawalCancelledPayload): Promise<FnWithdrawalCancelledResult>;
29
+ }
30
+ export default MultisigService;
31
+ //# sourceMappingURL=MultisigService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultisigService.d.ts","sourceRoot":"","sources":["../../../../src/services/db/multisig/MultisigService.ts"],"names":[],"mappings":"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"}