/** Static catalog for integration tools (OpenAPI-style discovery without Swagger). */
export function getOmnlApiCatalog(): {
  service: string;
  basePath: string;
  version: string;
  endpoints: Array<{
    method: string;
    path: string;
    description: string;
    query?: string[];
    auth?: string;
    body?: string;
  }>;
} {
  return {
    service: 'HYBX OMNL',
    basePath: '/api/v1',
    version: '1.5.0',
    endpoints: [
      { method: 'GET', path: '/omnl/openapi.json', description: 'OpenAPI 3.0 JSON (Swagger-compatible)', auth: 'none' },
      { method: 'GET', path: '/omnl/catalog', description: 'This catalog (machine-readable)', auth: 'none' },
      { method: 'GET', path: '/omnl/integration-status', description: 'Which env-backed integrations are configured', auth: 'none' },
      { method: 'GET', path: '/omnl/reconcile-anchor', description: 'SHA-256 of canonical IPSAS registry + journal matrix JSON', auth: 'OMNL_API_KEY when OMNL_REQUIRE_API_KEY=1' },
      { method: 'GET', path: '/omnl/reconcile/triple-state', description: 'Fineract + on-chain + custodian reconcile', query: ['lineId'], auth: 'OMNL_API_KEY' },
      { method: 'GET', path: '/omnl/disclosures/full', description: 'IFRS 7/9/13 + IAS 21/37 extracts', query: ['lineId'], auth: 'OMNL_API_KEY' },
      { method: 'GET', path: '/omnl/entities', description: 'Regulated entity registry (Fineract master data)', auth: 'OMNL_API_KEY' },
      { method: 'GET', path: '/omnl/entities/:clientNumber', description: 'Single entity by client number', auth: 'OMNL_API_KEY' },
      { method: 'POST', path: '/omnl/iso20022/messages', description: 'Store ISO 20022 message (10y retention)', auth: 'OMNL_API_KEY' },
      { method: 'GET', path: '/omnl/iso20022/messages', description: 'List stored ISO messages', auth: 'OMNL_API_KEY' },
      { method: 'GET', path: '/omnl/roles/matrix', description: 'Fineract SoD roles matrix JSON', auth: 'OMNL_API_KEY' },
      { method: 'GET', path: '/omnl/cross-chain-lines', description: 'hybx-omnl-cross-chain-lines.json lines[]', auth: 'none' },
      { method: 'GET', path: '/omnl/zk-verifier', description: 'ZK verifier address from OMNL_ZK_VERIFIER', auth: 'none' },
      { method: 'GET', path: '/omnl/mirror-coordinator', description: 'Read on-chain mirror destination', query: ['chainId'], auth: 'none' },
      { method: 'GET', path: '/omnl/compliance/console', description: 'Operator compliance console snapshot (posture, actions, evidence)', query: ['lineId'], auth: 'OMNL_API_KEY' },
      { method: 'GET', path: '/omnl/compliance/safe-notary-gate-tx', description: 'Download Gnosis Safe tx JSON for requireNotarizedEvidence', auth: 'OMNL_API_KEY' },
      { method: 'GET', path: '/omnl/compliance/web3', description: 'Web3 compliance summary (contracts, matrix rows)', auth: 'OMNL_API_KEY' },
      { method: 'GET', path: '/omnl/compliance/:lineId', description: 'ComplianceCore snapshot', query: ['chainId'], auth: 'OMNL_API_KEY when OMNL_REQUIRE_API_KEY=1' },
      { method: 'GET', path: '/omnl/compliance-aggregated/:lineId', description: 'Aggregated supply + policy', auth: 'none' },
      { method: 'GET', path: '/omnl/instruments', description: 'InstrumentRegistry lines', query: ['chainId'], auth: 'none' },
      { method: 'GET', path: '/omnl/attestations/:lineId', description: 'ReserveCommitmentStore commitment', query: ['chainId'], auth: 'none' },
      { method: 'GET', path: '/omnl/breaker', description: 'Circuit breaker status', query: ['chainId', 'lineId'], auth: 'none' },
      { method: 'GET', path: '/omnl/mirror-status/:lineId', description: 'Compare reserve attestation 138 vs 651940', auth: 'none' },
      { method: 'GET', path: '/omnl/health', description: 'Multi-chain compliance probe', query: [], auth: 'none' },
      { method: 'GET', path: '/omnl/ipsas/registry', description: 'IPSAS GL registry JSON', auth: 'none' },
      { method: 'GET', path: '/omnl/ipsas/matrix', description: 'Journal matrix JSON', auth: 'none' },
      { method: 'GET', path: '/omnl/ipsas/validate-pair', description: 'Validate one debit/credit pair', query: ['debitGlCode', 'creditGlCode'], auth: 'none' },
      {
        method: 'POST',
        path: '/omnl/ipsas/validate-pairs',
        description: 'Batch validate journal pairs',
        body: '{ pairs: [{ debitGlCode, creditGlCode }] }',
        auth: 'none',
      },
      { method: 'GET', path: '/omnl/ipsas/fineract-health', description: 'Fineract API reachability (glaccounts probe)', auth: 'none' },
      { method: 'GET', path: '/omnl/ipsas/fineract-compare', description: 'Registry vs live GL accounts', auth: 'OMNL_API_KEY if set' },
      { method: 'GET', path: '/omnl/ipsas/layer/:layer', description: 'Monetary layer hint', auth: 'none' },
      { method: 'GET', path: '/omnl/ipsas/compliance-context/:lineId', description: 'Compliance + IPSAS guidance', query: ['aggregated'], auth: 'OMNL_API_KEY if set' },
      { method: 'GET', path: '/omnl/terminal/status', description: 'Settlement terminal integration status', auth: 'OMNL_API_KEY' },
      { method: 'GET', path: '/omnl/terminal/package', description: 'Full settlement terminal JSON (POF, debit note, remittance, tokenization, SWIFT copy, screens)', query: ['settlementRef', 'officeId', 'valueDate', 'amountUsd'], auth: 'OMNL_API_KEY' },
      { method: 'GET', path: '/omnl/terminal/proof-of-funds', description: 'Proof of Funds JSON (Fineract GL 2100)', query: ['settlementRef', 'officeId'], auth: 'OMNL_API_KEY' },
      { method: 'GET', path: '/omnl/terminal/debit-note', description: 'Debit note JSON mapped to IPSAS journal pair', query: ['settlementRef', 'officeId'], auth: 'OMNL_API_KEY' },
      { method: 'GET', path: '/omnl/terminal/remittance-advice', description: 'Remittance advice JSON (camt.054-equivalent)', query: ['settlementRef', 'officeId'], auth: 'OMNL_API_KEY' },
      { method: 'GET', path: '/omnl/terminal/tokenization-sanitized', description: 'Tokenization record with redacted PII for external distribution', query: ['settlementRef', 'officeId'], auth: 'OMNL_API_KEY' },
      { method: 'GET', path: '/omnl/terminal/conversion-swift-copy', description: 'Internal conversion SWIFT-field copy (not wire confirmation)', query: ['settlementRef', 'officeId'], auth: 'OMNL_API_KEY' },
      { method: 'GET', path: '/omnl/terminal/screen', description: 'Terminal screen text (black/green or gray/black)', query: ['mode', 'artifact', 'format'], auth: 'OMNL_API_KEY' },
      { method: 'POST', path: '/omnl/terminal/alchemy/rpc', description: 'Alchemy JSON-RPC (read/estimate methods)', body: '{ network, method, params }', auth: 'OMNL_API_KEY' },
      { method: 'POST', path: '/omnl/terminal/alchemy/prices', description: 'Alchemy token prices by address', body: '{ network, addresses[] }', auth: 'OMNL_API_KEY' },
      { method: 'POST', path: '/omnl/terminal/alchemy/tx-prep', description: 'Prepare unsigned ERC-20 transfer calldata via Alchemy (dry-run default)', body: '{ network, from, to, tokenAddress, amount, dryRun }', auth: 'OMNL_API_KEY' },
      { method: 'POST', path: '/journal-entries', description: 'Create payout journal entry draft (IPSAS-validated pair)', auth: 'OMNL_API_KEY' },
      { method: 'GET', path: '/journal-entries/:id', description: 'Get journal entry by id', auth: 'OMNL_API_KEY' },
      { method: 'POST', path: '/journal-entries/:id/post', description: 'Post journal entry to ledger path', auth: 'OMNL_API_KEY' },
      { method: 'POST', path: '/journal-entries/:id/reverse', description: 'Reverse posted journal entry', auth: 'OMNL_API_KEY' },
      { method: 'POST', path: '/balance-reservations', description: 'Reserve balance before payout dispatch', auth: 'OMNL_API_KEY' },
      { method: 'GET', path: '/balance-reservations/:id', description: 'Get balance reservation', auth: 'OMNL_API_KEY' },
      { method: 'DELETE', path: '/balance-reservations/:id', description: 'Release balance reservation', auth: 'OMNL_API_KEY' },
    ],
  };
}
