Skip to content

Add multi-currency ledger support for GHS and NGN#3

Closed
AugistineCreates wants to merge 197 commits into
mainfrom
feature/dynamic-token-mapping
Closed

Add multi-currency ledger support for GHS and NGN#3
AugistineCreates wants to merge 197 commits into
mainfrom
feature/dynamic-token-mapping

Conversation

@AugistineCreates

Copy link
Copy Markdown
Owner

This PR adds multi-currency ledger support, enabling deposits in GHS and NGN with proper conversion to the base currency (USD). It enriches ledger entries with original currency and conversion rate metadata, ensuring accurate accounting across supported African fiat currencies.

olalekanali and others added 30 commits June 23, 2026 11:08
)

Integrate Apollo Sandbox Explorer within the documentation portal so
developers can browse and test the Mobile Money GraphQL schema directly
from the docs site.

Changes:
- Add GraphQLPlayground component using Apollo Sandbox CDN embed
- Add /graphql page route with BrowserOnly lazy loading
- Add navbar and footer links to GraphQL Playground
- Add homepage button linking to the playground
- Add responsive CSS with config bar, loading state, and full-height embed
- Pre-populate editor with example queries matching the schema (me, transactions, deposit, dispute)
sublime247#1321)

- Implement soroban-gas-bench.js as self-contained Node.js CLI tool
- Parse contract source code to identify Soroban operations (storage,
  token, crypto, auth) and compute gas estimates using Protocol 20
  cost model constants
- Support WASM binary analysis when pre-built binaries are available
- Add Rust benchmark (benchmarks/src/main.rs) for use when cargo is
  installed, using soroban_sdk testutils for precise measurements
- Output clean gas figures as formatted tables, JSON, and Markdown
- Generate soroban-gas-report.json and soroban-gas-report.md in
  benchmarks/results/
- Update README.md with comprehensive CLI documentation

Escrow contract: 473,800 total CPU instructions across 6 methods
HTLC contract: 254,050 total CPU instructions across 4 methods
- Add Pino logger imports to auth middleware
- Replace console.error with structured logger in auth.ts
- Replace console.log/error with structured logger in reconciler service
- Add logger to reconciliation script with structured JSON output
- All logs now include service name, environment, and ISO timestamps
- Sensitive data (API keys, auth headers) automatically redacted by Pino
- Logs structured as JSON for easy parsing by log aggregators

Fixes: sublime247#1332
- Create accounting retry queue with exponential backoff (60s-10 attempts)
- Add accounting retry worker with structured logging
- Route failed sync operations to retry queue for manual/scheduled retry
- Replace console logs with structured Pino logging in syncWorker
- Add event listeners for job completion and failure monitoring
- Implement distinction between transient and permanent errors
- Transient errors (rate limit, network) auto-retry with backoff
- Permanent errors moved to retry queue after exhausting primary attempts
- Export retry queue functions and worker in queue index
- Update queue shutdown to include retry queue and worker cleanup
- Add logger mocking to accounting sync tests
- Update test assertions to use mocked logger instead of console spies

Key features:
- Failed updates retry correctly with exponential backoff
- Operators can manually retry operations via retryAccountingOperation()
- Queue stats and job inspection available via getAccountingRetryQueueStats()
- Structured logging for debugging and monitoring
- Conservative 2-concurrency limit to respect API rate limits

Fixes sublime247#1312
Add KmsFileSigner to hsmService.ts that signs SHA-256 file digests
using AWS KMS asymmetric keys, with automatic signing on upload
via s3Upload.ts and signature verification on read paths.

Closes sublime247#1286
…0 webhooks

- Add OrangeMadagascarProvider with OAuth 2.0 client credentials grant
- Implement resilient token caching with automatic pre-fetch daemon
- Create callback signature verification middleware (HMAC-SHA256)
- Add callback routes with Zod schema validation for single/batch payloads
- Wire provider into lazy-loading switch, health checks, and config
- Add ORANGE_MADAGASCAR enum, provider limits, and appConfig section

Closes sublime247#1252
feat(sep31): implement dynamic fee bump strategy using Horizon base fee
- 17 provider tests: token caching, operations, batch payouts, signature validation
- 9 middleware tests: secret config, signature verification, anomaly logging
- 8 route tests: valid/invalid callbacks, Zod schema validation, batch callbacks
- Strip optional 'sha256=' prefix from incoming signature headers before timing-safe comparison.
- Utilize raw request body when available for HMAC verification.
- Add .markdownlint.json config with sensible defaults
- Install markdownlint-cli as dev dependency
- Add lint:md / lint:md:fix npm scripts
- Create GitHub Actions workflow to lint changed .md files on PRs
- Update lint-staged to run markdownlint --fix on staged .md files

Closes sublime247#1028
sublime247 and others added 29 commits June 24, 2026 21:30
feat(cli): add telemetry config toggle to momo-cli setup wizard
…l-error-matrix

feat(providers): map Vodacom and Tigo transaction codes to global error matrix
…ess-worker-bundle-assets-sizes

Issue 1048 compress worker bundle assets sizes
…ount

Add VIP Fee Discount Tier logic check
…t-coverage

Feature/syncworker test coverage
…provider

feat: add Wave Senegal mobile money provider (sublime247#1256)
…-callback-ingest

Tune performance metric of parsing in the pipeline
…d-sanctions-engine

Feature/automated sanctions engine
Log Provider Status Changes on Dashboard
…pliance-ivms101

Feature/webhook compliance ivms101
…ity-tax-config

fix: password complexity validation (sublime247#1295) and configurable tax rates (sublime247#1311)
…-image-load-times

feat: optimize image load times in docs portal using sharp
…list-middleware

feat: add IP blacklist middleware and worker-level IP check
[MEDIUM] Automate API Specs Generation Sync during docs builds
…tions-sync-cron

feat(aml): implement periodic sanctions list sync cron (sublime247#1293)
…olver-spans

sublime247#1015 Add Datadog APM Tracing for GraphQL Resolvers execution
…ache

feat: cache network fee variables in StellarService
…le-money-updates

Feature/mobile money updates
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.