From 811ecb58c16443ce3a02fb6b9c7c78cc801addf6 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Tue, 24 Mar 2026 13:40:00 +0200 Subject: [PATCH 01/51] refactor: support for mockgatehub in local environment --- .github/copilot-instructions.md | 167 ++++++++ docker/dev/.env.example | 33 -- docker/dev/docker-compose.yml | 336 ---------------- docker/dev/kratos.yml | 91 ----- docker/entrypoint.sh | 13 - docker/identity.schema.json | 33 -- docker/prod/.env.example | 109 ----- docker/prod/docker-compose.yml | 305 -------------- docker/prod/kratos.yml | 91 ----- docker/temp/private-key.pem | 3 - local/.env.example | 116 ++++++ local/.gitignore | 1 + local/docker-compose.yml | 287 +++++++++++++ {docker => local/init}/dbinit.sql | 0 local/scripts/rafiki-setup.js | 379 ++++++++++++++++++ packages/wallet/backend/src/config/env.ts | 1 + packages/wallet/backend/src/gatehub/client.ts | 14 + .../wallet/backend/src/gatehub/service.ts | 24 ++ .../backend/src/middleware/withSession.ts | 9 +- packages/wallet/frontend/Dockerfile.dev | 16 + packages/wallet/frontend/next.config.js | 19 +- .../wallet/frontend/src/lib/httpClient.ts | 8 +- packages/wallet/frontend/src/middleware.ts | 25 +- packages/wallet/frontend/src/utils/helpers.ts | 3 +- pnpm-lock.yaml | 270 ++++++++++++- pnpm-workspace.yaml | 1 + 26 files changed, 1322 insertions(+), 1032 deletions(-) create mode 100644 .github/copilot-instructions.md delete mode 100644 docker/dev/.env.example delete mode 100644 docker/dev/docker-compose.yml delete mode 100644 docker/dev/kratos.yml delete mode 100755 docker/entrypoint.sh delete mode 100644 docker/identity.schema.json delete mode 100644 docker/prod/.env.example delete mode 100644 docker/prod/docker-compose.yml delete mode 100644 docker/prod/kratos.yml delete mode 100644 docker/temp/private-key.pem create mode 100644 local/.env.example create mode 100644 local/.gitignore create mode 100644 local/docker-compose.yml rename {docker => local/init}/dbinit.sql (100%) create mode 100644 local/scripts/rafiki-setup.js diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 000000000..361a19b90 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,167 @@ +# GitHub Copilot Instructions for Interledger Test Network + +## Purpose And Scope + +Test Network is a full-stack pnpm workspace monorepo for Interledger sandbox integrations. It contains two apps: + +- Wallet (`packages/wallet/*`): Next.js frontend + Node/Express backend. +- Boutique (`packages/boutique/*`): Vite/React frontend + Node/Express backend. + +Shared packages are in `packages/shared/backend`, `packages/wallet/shared`, and `packages/boutique/shared`. + +Use this file as the default source of truth. Trust these instructions and only search the repo when this file is incomplete or proven wrong. + +## Runtime And Tooling (Strict) + +- Node: `^20.12.1` required by `package.json` engines. +- Package manager: `pnpm@9.1.4` (`packageManager` field). +- Never use `npm install` or `yarn` in this repo. + +Local shell note validated on this machine: default `node` was `v18.19.1`, which causes engine failures even if `pnpm` exists. Ensure Node 20 is first on `PATH` before running scripts. + +Example reliable setup: + +```bash +PATH=/home/$USER/.nvm/versions/node/v20.20.0/bin:$PATH +corepack pnpm -v +node -v +``` + +## Bootstrap, Build, Test, Lint (Validated) + +Run from repo root `testnet/`. + +1. Bootstrap (always first): + +```bash +PATH=/home/$USER/.nvm/versions/node/v20.20.0/bin:$PATH corepack pnpm install --frozen-lockfile +``` + +Validated: passes in ~1.5s when lockfile is up to date. + +2. Quality checks: + +```bash +PATH=/home/$USER/.nvm/versions/node/v20.20.0/bin:$PATH corepack pnpm checks +``` + +Validated behavior: may fail on existing repo formatting drift (Prettier). In this workspace it failed on: + +- `.github/copilot-instructions.md` +- `docker/local/docker-compose.yml` +- `docker/local/rafiki-setup.js` +- `packages/wallet/frontend/next.config.js` +- `packages/wallet/frontend/src/middleware.ts` + +3. Lint only (for signal isolation): + +```bash +PATH=/home/$USER/.nvm/versions/node/v20.20.0/bin:$PATH corepack pnpm lint:check +``` + +Validated behavior: currently fails on `packages/wallet/frontend/src/middleware.ts` (`@typescript-eslint/no-explicit-any`). + +4. Build all: + +```bash +PATH=/home/$USER/.nvm/versions/node/v20.20.0/bin:$PATH corepack pnpm build +``` + +Validated behavior: currently fails quickly if Docker-created artifacts are root-owned (TS5033 / EACCES in `packages/wallet/shared/dist`). + +5. Package-scoped backend verification: + +```bash +PATH=/home/$USER/.nvm/versions/node/v20.20.0/bin:$PATH corepack pnpm boutique:backend build +PATH=/home/$USER/.nvm/versions/node/v20.20.0/bin:$PATH corepack pnpm boutique:backend test +``` + +Validated: passes (`5` suites, `29` tests) in ~17s for tests. + +Wallet backend flow currently blocked by the same `wallet/shared/dist` permission issue: + +```bash +PATH=/home/$USER/.nvm/versions/node/v20.20.0/bin:$PATH corepack pnpm wallet:backend build +``` + +## Known Failure Modes And Workarounds + +1. Engine mismatch (`Unsupported environment`, Node 18 shown): + +- Cause: shell not using Node 20. +- Fix: put Node 20 bin first in `PATH` for every command (or `nvm use lts/iron` in an interactive shell that works reliably). + +2. `TS5033` / `EACCES` writing under `packages/wallet/shared/dist`: + +- Cause: prior Docker runs produced root-owned build artifacts. +- Symptom: root build and wallet backend build fail. +- Fix: ensure those files are writable by your user before rebuilding (example: adjust ownership/permissions of `packages/wallet/shared/dist` and `packages/wallet/shared/tsconfig.build.tsbuildinfo`). + +3. `pnpm checks` failing even without your changes: + +- Cause: pre-existing formatting/lint drift. +- Mitigation: run targeted checks for touched packages and report baseline failures explicitly in PR notes. + +No command timeouts were observed in this validation pass. Failing commands exited quickly (under ~6s except build/test commands). + +## Local Run Flow + +Required precondition before first `pnpm dev`: + +```bash +cp docker/dev/.env.example docker/dev/.env +``` + +GateHub-related variables in `docker/dev/.env` are required for full KYC/funding flows. + +Main run modes: + +- `pnpm dev` -> hot-reload backend containers + frontend dev servers. +- `pnpm dev:debug` -> backend debug mode (`9229`, `9230`). +- `pnpm dev:lite` -> run built backend (no hot reload). +- `pnpm localenv:stop` -> stop local docker environment. + +Service endpoints: + +- Wallet FE: `http://localhost:4003` +- Wallet BE: `http://localhost:3003` +- Boutique FE: `http://localhost:4004` +- Boutique BE: `http://localhost:3004` +- Rafiki Admin UI: `http://localhost:3012` + +## Architecture And File Map + +High-signal root files: + +- `package.json`: canonical scripts and engine constraints. +- `pnpm-workspace.yaml`: workspace package patterns. +- `tsconfig.json`: top-level project references. +- `eslint.config.mjs`, `.prettierrc.js`: repo-wide code quality rules. +- `docker/dev/docker-compose.yml`: full local dependency graph (Postgres, Redis, Rafiki, Kratos, app backends). + +Key source areas: + +- Wallet backend: `packages/wallet/backend/src` +- Wallet frontend: `packages/wallet/frontend` +- Boutique backend: `packages/boutique/backend/src` +- Boutique frontend: `packages/boutique/frontend/src` +- Shared backend utilities: `packages/shared/backend/src` + +## CI And PR Expectations + +Primary workflows: + +- `.github/workflows/ci.yml` + - Always runs `pnpm checks`. + - Build/test jobs are gated by PR labels (`package: wallet/backend`, `package: boutique/frontend`, etc.). + - Wallet backend CI test command: `pnpm wallet:backend build && pnpm wallet:backend test --detectOpenHandles --forceExit`. +- `.github/workflows/pr_title_check.yml` + - PR title must satisfy Conventional Commits. +- `.github/workflows/build-publish.yaml` + - Builds package matrix on PR/push; publishes images on `v*` tags. + +Before opening a PR, replicate the relevant CI subset for your changed package(s) and note any pre-existing baseline failures. + +## Agent Operating Rule + +When implementing changes, follow this file first, execute commands in the documented order, and avoid broad repo searches unless required details are missing or incorrect. diff --git a/docker/dev/.env.example b/docker/dev/.env.example deleted file mode 100644 index 4c1762e7c..000000000 --- a/docker/dev/.env.example +++ /dev/null @@ -1,33 +0,0 @@ -SEND_EMAIL= -FROM_EMAIL= -SENDGRID_API_KEY= -AUTH_IDENTITY_SERVER_SECRET= -AUTH_COOKIE_KEY= -AUTH_INTERACTION_COOKIE_SAME_SITE= -RATE_API_KEY= -WALLET_ADDRESS_REDIRECT_HTML_PAGE= - -GATEHUB_ACCESS_KEY= -GATEHUB_SECRET_KEY= -GATEHUB_WEBHOOK_SECRET= -GATEHUB_GATEWAY_UUID= -GATEHUB_SETTLEMENT_WALLET_ADDRESS= -GATEHUB_ORG_ID= -GATEHUB_CARD_APP_ID= -RATE_LIMIT= -RATE_LIMIT_LEVEL= -GATEHUB_ACCOUNT_PRODUCT_CODE= -GATEHUB_CARD_PRODUCT_CODE= -GATEHUB_NAME_ON_CARD= -GATEHUB_CARD_PP_PREFIX= -CARD_PIN_HREF= -CARD_DATA_HREF= - -# commerce env variables -# encoded base 64 private key -PRIVATE_KEY= -KEY_ID= -PAYMENT_POINTER= - -OPERATOR_TENANT_ID= -ADMIN_API_SECRET= diff --git a/docker/dev/docker-compose.yml b/docker/dev/docker-compose.yml deleted file mode 100644 index 8afce4675..000000000 --- a/docker/dev/docker-compose.yml +++ /dev/null @@ -1,336 +0,0 @@ -version: '3.5' - -x-logging: &logging - logging: - driver: 'json-file' - options: - max-size: '100m' - -services: - postgres: - container_name: postgres - image: 'postgres:15' - environment: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: password - ports: - - '5433:5432' - restart: unless-stopped - networks: - - testnet - volumes: - - pg-data:/var/lib/postgresql/data - - ../dbinit.sql:/docker-entrypoint-initdb.d/init.sql - - # Wallet - wallet-backend: - container_name: wallet-backend - build: - context: ../.. - args: - DEV_MODE: ${DEV_MODE} - dockerfile: ./packages/wallet/backend/Dockerfile.dev - depends_on: - - postgres - - rafiki-backend - - redis - volumes: - - ../../packages/wallet/backend:/home/testnet/packages/wallet/backend - - ../../packages/wallet/shared:/home/testnet/packages/wallet/shared - environment: - NODE_ENV: development - PORT: 3003 - DEBUG_PORT: 9229 - DATABASE_URL: postgres://wallet_backend:wallet_backend@postgres/wallet_backend - COOKIE_NAME: testnet.cookie - COOKIE_PASSWORD: testnet.cookie.password.super.secret.ilp - COOKIE_TTL: 2630000 - OPEN_PAYMENTS_HOST: https://rafiki-backend - GRAPHQL_ENDPOINT: http://rafiki-backend:3001/graphql - AUTH_GRAPHQL_ENDPOINT: http://rafiki-auth:3008/graphql - AUTH_DOMAIN: http://rafiki-auth:3009 - AUTH_IDENTITY_SERVER_SECRET: ${AUTH_IDENTITY_SERVER_SECRET} - RAFIKI_WEBHOOK_SIGNATURE_SECRET: ${RAFIKI_SIGNATURE_SECRET:-327132b5-99e9-4eb8-8a25-2b7d7738ece1} - SENDGRID_API_KEY: ${SENDGRID_API_KEY} - FROM_EMAIL: ${FROM_EMAIL} - SEND_EMAIL: ${SEND_EMAIL:-false} - REDIS_URL: redis://redis:6379/0 - KRATOS_ADMIN_URL: 'http://kratos:4434/admin' - GATEHUB_ACCESS_KEY: ${GATEHUB_ACCESS_KEY} - GATEHUB_SECRET_KEY: ${GATEHUB_SECRET_KEY} - GATEHUB_WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET} - GATEHUB_GATEWAY_UUID: ${GATEHUB_GATEWAY_UUID} - GATEHUB_SETTLEMENT_WALLET_ADDRESS: ${GATEHUB_SETTLEMENT_WALLET_ADDRESS} - GATEHUB_ORG_ID: ${GATEHUB_ORG_ID} - GATEHUB_CARD_APP_ID: ${GATEHUB_CARD_APP_ID} - RATE_LIMIT: ${RATE_LIMIT} - RATE_LIMIT_LEVEL: ${RATE_LIMIT_LEVEL} - GATEHUB_ACCOUNT_PRODUCT_CODE: ${GATEHUB_ACCOUNT_PRODUCT_CODE} - GATEHUB_CARD_PRODUCT_CODE: ${GATEHUB_CARD_PRODUCT_CODE} - GATEHUB_NAME_ON_CARD: ${GATEHUB_NAME_ON_CARD} - GATEHUB_CARD_PP_PREFIX: ${GATEHUB_CARD_PP_PREFIX} - CARD_DATA_HREF: ${CARD_DATA_HREF} - CARD_PIN_HREF: ${CARD_PIN_HREF} - STRIPE_SECRET_KEY: ${STRIPE_SECRET_KEY} - STRIPE_WEBHOOK_SECRET: ${STRIPE_WEBHOOK_SECRET} - USE_STRIPE: ${USE_STRIPE} - OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} - ADMIN_API_SECRET: ${ADMIN_API_SECRET:-secret-key} - ADMIN_SIGNATURE_VERSION: 1 - restart: always - networks: - - testnet - ports: - - '3003:3003' - - '9229:9229' # Map debugger port to local machine's port 9229 - <<: *logging - - # Boutique - boutique-backend: - container_name: boutique-backend - build: - context: ../.. - args: - DEV_MODE: ${DEV_MODE} - dockerfile: ./packages/boutique/backend/Dockerfile.dev - volumes: - - ../../packages/boutique/backend:/home/testnet/packages/boutique/backend - - ../../packages/boutique/shared:/home/testnet/packages/boutique/shared - depends_on: - - postgres - environment: - NODE_ENV: development - PORT: 3004 - DEBUG_PORT: 9230 - DATABASE_URL: postgres://boutique_backend:boutique_backend@postgres/boutique_backend - PRIVATE_KEY: ${PRIVATE_KEY} - KEY_ID: ${KEY_ID} - PAYMENT_POINTER: ${PAYMENT_POINTER} - restart: always - networks: - - testnet - ports: - - '3004:3004' - - '9230:9230' # Map debugger port to local machine's port 9230 - <<: *logging - - # Rafiki - rafiki-auth: - container_name: rafiki-auth - image: ghcr.io/interledger/rafiki-auth:v2.3.0-beta - restart: always - networks: - - testnet - ports: - - '3006:3006' - - '3008:3008' - environment: - AUTH_PORT: 3006 - INTROSPECTION_PORT: 3007 - ADMIN_PORT: 3008 - NODE_ENV: development - AUTH_SERVER_URL: http://localhost:3006 - AUTH_DATABASE_URL: postgresql://rafiki_auth:rafiki_auth@postgres/rafiki_auth - IDENTITY_SERVER_URL: http://localhost:4003/grant-interactions - IDENTITY_SERVER_SECRET: ${AUTH_IDENTITY_SERVER_SECRET:-327132b5-99e9-4eb8-8a25-2b7d7738ece1} - COOKIE_KEY: ${AUTH_COOKIE_KEY:-8fd398393c47dd27a3167d9c081c094f} - INTERACTION_COOKIE_SAME_SITE: ${AUTH_INTERACTION_COOKIE_SAME_SITE:-lax} - WAIT_SECONDS: 1 - REDIS_URL: redis://redis:6379/0 - OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} - ADMIN_API_SECRET: ${ADMIN_API_SECRET:-secret-key} - ADMIN_SIGNATURE_VERSION: 1 - depends_on: - - postgres - <<: *logging - - rafiki-backend: - container_name: rafiki-backend - image: ghcr.io/interledger/rafiki-backend:v2.3.0-beta - restart: always - privileged: true - volumes: - - ../temp/:/workspace/temp/ - ports: - - '3010:80' - - '3011:3001' - - '3005:3005' - - '3002:3002' - networks: - - testnet - environment: - NODE_ENV: development - LOG_LEVEL: debug - ADMIN_PORT: 3001 - CONNECTOR_PORT: 3002 - OPEN_PAYMENTS_PORT: 80 - DATABASE_URL: postgresql://rafiki_backend:rafiki_backend@postgres/rafiki_backend - USE_TIGERBEETLE: true - TIGERBEETLE_CLUSTER_ID: 0 - TIGERBEETLE_REPLICA_ADDRESSES: 10.5.0.50:4342 - NONCE_REDIS_KEY: test - AUTH_SERVER_GRANT_URL: http://rafiki-auth:3006 - AUTH_SERVER_INTROSPECTION_URL: http://rafiki-auth:3007 - ILP_ADDRESS: test.net - ILP_CONNECTOR_URL: http://127.0.0.1:3002 - STREAM_SECRET: BjPXtnd00G2mRQwP/8ZpwyZASOch5sUXT5o0iR5b5wU= - ADMIN_KEY: admin - OPEN_PAYMENTS_URL: https://rafiki-backend - REDIS_URL: redis://redis:6379/0 - WALLET_ADDRESS_URL: https://rafiki-backend/.well-known/pay - # Testnet urls - not implemented - WEBHOOK_URL: http://wallet-backend:3003/webhooks - WEBHOOK_TIMEOUT: 60000 - SIGNATURE_SECRET: ${RAFIKI_SIGNATURE_SECRET:-327132b5-99e9-4eb8-8a25-2b7d7738ece1} - EXCHANGE_RATES_URL: http://wallet-backend:3003/rates - ENABLE_AUTO_PEERING: true - AUTO_PEERING_SERVER_PORT: 3005 - INSTANCE_NAME: 'Testnet Wallet' - SLIPPAGE: 0.01 - KEY_ID: rafiki - WALLET_ADDRESS_REDIRECT_HTML_PAGE: ${WALLET_ADDRESS_REDIRECT_HTML_PAGE} - OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} - ADMIN_API_SECRET: ${ADMIN_API_SECRET:-secret-key} - ADMIN_SIGNATURE_VERSION: 1 - AUTH_SERVICE_API_URL: http://rafiki-auth:3011 - CARD_SERVICE_URL: 'http://rafiki-card-service:3007' - CARD_WEBHOOK_SERVICE_URL: 'http://rafiki-card-service:3007/webhook' - POS_SERVICE_URL: 'http://rafiki-pos-servicee:3014' - POS_WEBHOOK_SERVICE_URL: 'http://rafiki-pos-service:3014/webhook' - depends_on: - - postgres - - redis - <<: *logging - - rafiki-frontend: - container_name: rafiki-frontend - image: ghcr.io/interledger/rafiki-frontend:v2.3.0-beta - depends_on: - - rafiki-backend - restart: always - privileged: true - ports: - - '3012:3012' - networks: - - testnet - environment: - PORT: 3012 - GRAPHQL_URL: http://rafiki-backend:3001/graphql - OPEN_PAYMENTS_URL: https://rafiki-backend/ - ENABLE_INSECURE_MESSAGE_COOKIE: true - KRATOS_CONTAINER_PUBLIC_URL: 'http://kratos:4433' - KRATOS_BROWSER_PUBLIC_URL: 'http://localhost:4433' - KRATOS_ADMIN_URL: 'http://kratos:4434/admin' - AUTH_ENABLED: false - SIGNATURE_VERSION: 1 - <<: *logging - - rafiki-card-service: - container_name: rafiki-card-service - image: ghcr.io/interledger/rafiki-card-service:v2.3.0-beta - restart: always - privileged: true - networks: - - testnet - ports: - - '3007:3007' - environment: - NODE_ENV: development - LOG_LEVEL: debug - CARD_SERVICE_PORT: 3007 - REDIS_URL: redis://redis:6379/0 - GRAPHQL_URL: http://rafiki-backend:3001/graphql - TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} - TENANT_SECRET: ${ADMIN_API_SECRET:-secret-key} - TENANT_SIGNATURE_VERSION: 1 - <<: *logging - - rafiki-pos-service: - container_name: rafiki-pos-service - image: ghcr.io/interledger/rafiki-point-of-sale:v2.3.0-beta - restart: always - privileged: true - networks: - - testnet - ports: - - '3014:3014' - environment: - NODE_ENV: development - LOG_LEVEL: debug - PORT: 3014 - GRAPHQL_URL: http://rafiki-backend:3001/graphql - TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} - TENANT_SECRET: ${ADMIN_API_SECRET:-secret-key} - TENANT_SIGNATURE_VERSION: 1 - WEBHOOK_SIGNATURE_SECRET: ${RAFIKI_SIGNATURE_SECRET:-327132b5-99e9-4eb8-8a25-2b7d7738ece1} - WEBHOOK_SIGNATURE_VERSION: 1 - USE_HTTP: true - <<: *logging - - kratos: - image: 'oryd/kratos:v1.3.1' - privileged: true - depends_on: - - postgres - - mailslurper - ports: - - '4433:4433' - volumes: - - ../entrypoint.sh:/entrypoint.sh - - ../identity.schema.json:/etc/config/kratos/identity.schema.json - - ./kratos.yml:/etc/config/kratos/kratos.yml - entrypoint: ['/entrypoint.sh'] - networks: - - testnet - - tigerbeetle: - image: ghcr.io/tigerbeetle/tigerbeetle:0.16.60 - privileged: true - volumes: - - tigerbeetle-data:/var/lib/tigerbeetle - networks: - testnet: - ipv4_address: 10.5.0.50 - entrypoint: - - /bin/sh - - -c - - | - set -ex - DATA_FILE=/var/lib/tigerbeetle/cluster_0_replica_0.tigerbeetle - set +e - ls $$DATA_FILE - DATA_FILE_EXISTS="$$?" - set -e - echo $$DATA_FILE_EXISTS - if [ "$$DATA_FILE_EXISTS" != 0 ]; then - ./tigerbeetle format --cluster=0 --replica=0 --replica-count=1 $$DATA_FILE; - fi - hostname -i - ls /var/lib/tigerbeetle - ./tigerbeetle start --addresses=0.0.0.0:4342 $$DATA_FILE - - redis: - image: 'redis:7' - restart: unless-stopped - networks: - - testnet - - mailslurper: - image: oryd/mailslurper:latest-smtps - ports: - - '4436:4436' - - '4437:4437' - networks: - - testnet - -networks: - testnet: - driver: bridge - ipam: - config: - - subnet: 10.5.0.0/24 - gateway: 10.5.0.1 - -volumes: - pg-data: - tigerbeetle-data: # named volumes can be managed easier using docker-compose diff --git a/docker/dev/kratos.yml b/docker/dev/kratos.yml deleted file mode 100644 index 6089d1a3d..000000000 --- a/docker/dev/kratos.yml +++ /dev/null @@ -1,91 +0,0 @@ -version: v0.13.0 - -dsn: postgres://kratos:kratos@postgres:5432/kratos?sslmode=disable&max_conns=20&max_idle_conns=4 - -serve: - public: - base_url: http://localhost:4433/ - cors: - enabled: true - admin: - base_url: http://kratos:4434/ - -selfservice: - default_browser_return_url: http://localhost:3012/ - allowed_return_urls: - - http://localhost:3012 - - methods: - link: - config: - lifespan: 1h - base_url: http://localhost:4433 - enabled: true - password: - enabled: true - - flows: - error: - ui_url: http://localhost:3012/error - - settings: - ui_url: http://localhost:3012/settings - privileged_session_max_age: 15m - required_aal: highest_available - - recovery: - enabled: true - ui_url: http://localhost:3012/auth/recovery - use: link - after: - hooks: - - hook: revoke_active_sessions - - verification: - enabled: false - - logout: - after: - default_browser_return_url: http://localhost:3012/auth - - login: - ui_url: http://localhost:3012/auth/login - lifespan: 10m - - registration: - enabled: false - -log: - level: debug - format: json - leak_sensitive_values: true - -secrets: - cookie: - - PLEASE-CHANGE-ME-I-AM-VERY-INSECURE - cipher: - - 32-LONG-SECRET-NOT-SECURE-AT-ALL - -ciphers: - algorithm: xchacha20-poly1305 - -hashers: - algorithm: bcrypt - bcrypt: - cost: 8 - -identity: - schemas: - - id: default - url: file:///etc/config/kratos/identity.schema.json - -courier: - smtp: - connection_uri: smtps://test:test@mailslurper:1025/?skip_ssl_verify=true - -session: - lifespan: 1h - cookie: - persistent: false - same_site: Strict - path: / diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh deleted file mode 100755 index 57a708b2b..000000000 --- a/docker/entrypoint.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -set -e - -echo "Running Kratos Migrations..." -kratos -c /etc/config/kratos/kratos.yml migrate sql -e --yes - -if [ "$DEV_MODE" = true ]; then - echo "Starting Kratos in dev mode..." - exec kratos serve -c /etc/config/kratos/kratos.yml --dev --watch-courier -else - echo "Starting Kratos..." - exec kratos serve -c /etc/config/kratos/kratos.yml -fi \ No newline at end of file diff --git a/docker/identity.schema.json b/docker/identity.schema.json deleted file mode 100644 index 5af61c822..000000000 --- a/docker/identity.schema.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Person", - "type": "object", - "properties": { - "traits": { - "type": "object", - "properties": { - "email": { - "type": "string", - "format": "email", - "title": "E-Mail", - "minLength": 3, - "ory.sh/kratos": { - "credentials": { - "password": { - "identifier": true - } - }, - "verification": { - "via": "email" - }, - "recovery": { - "via": "email" - } - } - } - }, - "required": ["email"], - "additionalProperties": false - } - } -} diff --git a/docker/prod/.env.example b/docker/prod/.env.example deleted file mode 100644 index ff5b63f16..000000000 --- a/docker/prod/.env.example +++ /dev/null @@ -1,109 +0,0 @@ -# GENERAL -NODE_ENV= - -# DATABASE -POSTGRES_USER= -POSTGRES_PASSWORD= - -# WALLET FRONTEND -WALLET_FRONTEND_PORT= -WALLET_FRONTEND_BACKEND_URL= -WALLET_FRONTEND_OPEN_PAYMENTS_HOST= -WALLET_FRONTEND_AUTH_HOST= -WALLET_FRONTEND_THEME= - -# WALLET BACKEND -WALLET_BACKEND_PORT= -WALLET_BACKEND_DATABASE_URL= -WALLET_BACKEND_REDIS_URL= -WALLET_BACKEND_COOKIE_NAME= -WALLET_BACKEND_COOKIE_PASSWORD= -WALLET_BACKEND_COOKIE_TTL= -WALLET_BACKEND_OPEN_PAYMENTS_HOST= -WALLET_BACKEND_GRAPHQL_ENDPOINT= -WALLET_BACKEND_RAFIKI_MONEY_FRONTEND_HOST= -WALLET_BACKEND_SENDGRID_API_KEY= -WALLET_BACKEND_FROM_EMAIL= -WALLET_BACKEND_SEND_EMAIL= -WALLET_BACKEND_AUTH_DOMAIN= -WALLET_BACKEND_GATEHUB_ENV= -WALLET_BACKEND_GATEHUB_ACCESS_KEY= -WALLET_BACKEND_GATEHUB_SECRET_KEY= -WALLET_BACKEND_GATEHUB_WEBHOOK_SECRET= -WALLET_BACKEND_GATEHUB_GATEWAY_UUID= -WALLET_BACKEND_GATEHUB_SETTLEMENT_WALLET_ADDRESS= -WALLET_BACKEND_GATEHUB_ORG_ID= -WALLET_BACKEND_GATEHUB_CARD_APP_ID= -WALLET_BACKEND_GATEHUB_ACCOUNT_PRODUCT_CODE= -WALLET_BACKEND_GATEHUB_CARD_PRODUCT_CODE= -WALLET_BACKEND_GATEHUB_NAME_ON_CARD= -WALLET_BACKEND_GATEHUB_CARD_PP_PREFIX= - -# BOUTIQUE -BOUTIQUE_BACKEND_PORT= -BOUTIQUE_BACKEND_DATABASE_URL= -BOUTIQUE_BACKEND_FRONTEND_URL= -BOUTIQUE_BACKEND_PRIVATE_KEY= -BOUTIQUE_BACKEND_KEY_ID= -BOUTIQUE_BACKEND_PAYMENT_POINTER= - -BOUTIQUE_FRONTEND_PORT= -BOUTIQUE_FRONTEND_API_BASE_URL= -BOUTIQUE_FRONTEND_CURRENCY= -BOUTIQUE_FRONTEND_THEME= - -# RAFIKI AUTH -RAFIKI_AUTH_PORT= -RAFIKI_AUTH_ADMIN_PORT= -RAFIKI_AUTH_INTROSPECTION_PORT= -RAFIKI_AUTH_DATABASE_URL= -RAFIKI_AUTH_IDENTITY_SERVER_DOMAIN= -RAFIKI_AUTH_IDENTITY_SERVER_SECRET= -RAFIKI_AUTH_COOKIE_KEY= -RAFIKI_AUTH_INTERACTION_COOKIE_SAME_SITE= -RAFIKI_AUTH_SERVER_DOMAIN= -RAFIKI_AUTH_WAIT_SECONDS= - -# RAFIKI BACKEND -RAFIKI_BACKEND_LOG_LEVEL= -RAFIKI_BACKEND_ADMIN_PORT= -RAFIKI_BACKEND_CONNECTOR_PORT= -RAFIKI_BACKEND_OPEN_PAYMENTS_PORT= -RAFIKI_BACKEND_DATABASE_URL= -RAFIKI_BACKEND_USE_TIGERBEETLE= -RAFIKI_BACKEND_TIGERBEETLE_CLUSTER_ID= -RAFIKI_BACKEND_TIGERBEETLE_REPLICA_ADDRESSES= -RAFIKI_BACKEND_NONCE_REDIS_KEY= -RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL= -RAFIKI_BACKEND_AUTH_SERVER_INTROSPECTION_URL= -RAFIKI_BACKEND_ILP_ADDRESS= -RAFIKI_BACKEND_STREAM_SECRET= -RAFIKI_BACKEND_ADMIN_KEY= -RAFIKI_BACKEND_OPEN_PAYMENTS_URL= -RAFIKI_BACKEND_REDIS_URL= -RAFIKI_BACKEND_WALLET_ADDRESS_URL= -RAFIKI_BACKEND_WEBHOOK_URL= -RAFIKI_BACKEND_WEBHOOK_TIMEOUT= -RAFIKI_BACKEND_EXCHANGE_RATES_URL= -RAFIKI_BACKEND_AUTOPEERING_PORT= -RAFIKI_BACKEND_ILP_CONNECTOR_ADDRESS= -RAFIKI_BACKEND_INSTANCE_NAME= -RAFIKI_BACKEND_SLIPPAGE= -RAFIKI_BACKEND_ENABLE_TELEMETRY= -RAFIKI_BACKEND_LIVENET= -RAFIKI_BACKEND_SIGNATURE_SECRET= -RAFIKI_BACKEND_WALLET_ADDRESS_REDIRECT_HTML_PAGE= - -# RAFIKI FRONTEND -RAFIKI_FRONTEND_PORT= -RAFIKI_FRONTEND_GRAPHQL_URL= -RAFIKI_FRONTEND_OPEN_PAYMENTS_URL= - -# INTERLEDGER PAY -INTERLEDGER_PAY_PORT= -INTERLEDGER_PAY_KEY_ID= -INTERLEDGER_PAY_PRIVATE_KEY= -INTERLEDGER_PAY_WALLET_ADDRESS= -INTERLEDGER_PAY_REDIRECT_URL= -INTERLEDGER_PAY_HOST= -INTERLEDGER_PAY_SESSION_COOKIE_SECRET_KEY= diff --git a/docker/prod/docker-compose.yml b/docker/prod/docker-compose.yml deleted file mode 100644 index 67df5ad8a..000000000 --- a/docker/prod/docker-compose.yml +++ /dev/null @@ -1,305 +0,0 @@ -version: '3.8' -name: 'testnet' - -x-logging: &logging - logging: - driver: 'gcplogs' - -services: - postgres: - image: 'postgres:15' - container_name: postgres - environment: - POSTGRES_USER: ${POSTGRES_USER} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} - networks: - - testnet - restart: unless-stopped - volumes: - - pg-data:/var/lib/postgresql/data - - ../dbinit.sql:/docker-entrypoint-initdb.d/init.sql - - wallet-frontend: - hostname: wallet-frontend - build: - context: ../.. - dockerfile: ./packages/wallet/frontend/Dockerfile.prod - args: - PORT: ${WALLET_FRONTEND_PORT} - COOKIE_NAME: ${WALLET_BACKEND_COOKIE_NAME} - NEXT_PUBLIC_BACKEND_URL: ${WALLET_FRONTEND_BACKEND_URL} - NEXT_PUBLIC_OPEN_PAYMENTS_HOST: ${WALLET_FRONTEND_OPEN_PAYMENTS_HOST} - NEXT_PUBLIC_AUTH_HOST: ${WALLET_FRONTEND_AUTH_HOST} - NEXT_PUBLIC_GATEHUB_ENV: ${WALLET_BACKEND_GATEHUB_ENV} - NEXT_PUBLIC_THEME: ${WALLET_FRONTEND_THEME} - container_name: wallet-frontend - ports: - - '${WALLET_FRONTEND_PORT}:${WALLET_FRONTEND_PORT}' - restart: always - <<: *logging - - wallet-backend: - build: - context: ../.. - dockerfile: ./packages/wallet/backend/Dockerfile.prod - container_name: wallet-backend - depends_on: - - postgres - - rafiki-backend - environment: - NODE_ENV: ${NODE_ENV} - PORT: ${WALLET_BACKEND_PORT} - DATABASE_URL: ${WALLET_BACKEND_DATABASE_URL} - COOKIE_NAME: ${WALLET_BACKEND_COOKIE_NAME} - COOKIE_PASSWORD: ${WALLET_BACKEND_COOKIE_PASSWORD} - COOKIE_TTL: ${WALLET_BACKEND_COOKIE_TTL} - OPEN_PAYMENTS_HOST: ${WALLET_BACKEND_OPEN_PAYMENTS_HOST} - GRAPHQL_ENDPOINT: ${WALLET_BACKEND_GRAPHQL_ENDPOINT} - RAFIKI_MONEY_FRONTEND_HOST: ${WALLET_BACKEND_RAFIKI_MONEY_FRONTEND_HOST} - SENDGRID_API_KEY: ${WALLET_BACKEND_SENDGRID_API_KEY} - FROM_EMAIL: ${WALLET_BACKEND_FROM_EMAIL} - SEND_EMAIL: ${WALLET_BACKEND_SEND_EMAIL} - AUTH_IDENTITY_SERVER_SECRET: ${RAFIKI_AUTH_IDENTITY_SERVER_SECRET} - RAFIKI_WEBHOOK_SIGNATURE_SECRET: ${RAFIKI_BACKEND_SIGNATURE_SECRET} - AUTH_DOMAIN: ${WALLET_BACKEND_AUTH_DOMAIN} - REDIS_URL: ${WALLET_BACKEND_REDIS_URL} - GATEHUB_ENV: ${WALLET_BACKEND_GATEHUB_ENV} - GATEHUB_ACCESS_KEY: ${WALLET_BACKEND_GATEHUB_ACCESS_KEY} - GATEHUB_SECRET_KEY: ${WALLET_BACKEND_GATEHUB_SECRET_KEY} - GATEHUB_WEBHOOK_SECRET: ${WALLET_BACKEND_GATEHUB_WEBHOOK_SECRET} - GATEHUB_GATEWAY_UUID: ${WALLET_BACKEND_GATEHUB_GATEWAY_UUID} - GATEHUB_SETTLEMENT_WALLET_ADDRESS: ${WALLET_BACKEND_GATEHUB_SETTLEMENT_WALLET_ADDRESS} - GATEHUB_ORG_ID: ${WALLET_BACKEND_GATEHUB_ORG_ID} - GATEHUB_CARD_APP_ID: ${WALLET_BACKEND_GATEHUB_CARD_APP_ID} - GATEHUB_ACCOUNT_PRODUCT_CODE: ${WALLET_BACKEND_GATEHUB_ACCOUNT_PRODUCT_CODE} - GATEHUB_CARD_PRODUCT_CODE: ${WALLET_BACKEND_GATEHUB_CARD_PRODUCT_CODE} - GATEHUB_NAME_ON_CARD: ${WALLET_BACKEND_GATEHUB_NAME_ON_CARD} - GATEHUB_CARD_PP_PREFIX: ${WALLET_BACKEND_GATEHUB_CARD_PP_PREFIX} - STRIPE_SECRET_KEY: ${WALLET_BACKEND_STRIPE_SECRET_KEY} - STRIPE_WEBHOOK_SECRET: ${WALLET_BACKEND_STRIPE_WEBHOOK_SECRET} - USE_STRIPE: ${USE_STRIPE} - networks: - - testnet - ports: - - '${WALLET_BACKEND_PORT}:${WALLET_BACKEND_PORT}' - restart: always - <<: *logging - - boutique-frontend: - container_name: boutique-frontend - build: - context: ../.. - dockerfile: ./packages/boutique/frontend/Dockerfile.prod - args: - PORT: ${BOUTIQUE_FRONTEND_API_BASE_URL} - VITE_API_BASE_URL: ${BOUTIQUE_FRONTEND_API_BASE_URL} - VITE_CURRENCY: ${BOUTIQUE_FRONTEND_CURRENCY} - VITE_THEME: ${BOUTIQUE_FRONTEND_THEME} - depends_on: - - postgres - environment: - NODE_ENV: ${NODE_ENV} - restart: always - networks: - - testnet - ports: - - '${BOUTIQUE_FRONTEND_PORT}:${BOUTIQUE_FRONTEND_PORT}' - <<: *logging - - boutique-backend: - container_name: boutique-backend - build: - context: ../.. - dockerfile: ./packages/boutique/backend/Dockerfile.prod - depends_on: - - postgres - environment: - NODE_ENV: ${NODE_ENV} - PORT: ${BOUTIQUE_BACKEND_PORT} - FRONTEND_URL: ${BOUTIQUE_BACKEND_FRONTEND_URL} - DATABASE_URL: ${BOUTIQUE_BACKEND_DATABASE_URL} - PRIVATE_KEY: ${BOUTIQUE_BACKEND_PRIVATE_KEY} - KEY_ID: ${BOUTIQUE_BACKEND_KEY_ID} - PAYMENT_POINTER: ${BOUTIQUE_BACKEND_PAYMENT_POINTER} - restart: always - networks: - - testnet - ports: - - '3004:3004' - <<: *logging - - rafiki-auth: - image: ghcr.io/interledger/rafiki-auth:v1.2.0-beta - container_name: rafiki-auth - environment: - NODE_ENV: ${NODE_ENV} - AUTH_PORT: ${RAFIKI_AUTH_PORT} - ADMIN_PORT: ${RAFIKI_AUTH_ADMIN_PORT} - INTROSPECTION_PORT: ${RAFIKI_AUTH_INTROSPECTION_PORT} - AUTH_DATABASE_URL: ${RAFIKI_AUTH_DATABASE_URL} - COOKIE_KEY: ${RAFIKI_AUTH_COOKIE_KEY} - INTERACTION_COOKIE_SAME_SITE: ${RAFIKI_AUTH_INTERACTION_COOKIE_SAME_SITE} - IDENTITY_SERVER_SECRET: ${RAFIKI_AUTH_IDENTITY_SERVER_SECRET} - IDENTITY_SERVER_URL: ${RAFIKI_AUTH_IDENTITY_SERVER_DOMAIN} - AUTH_SERVER_URL: ${RAFIKI_AUTH_SERVER_DOMAIN} - WAIT_SECONDS: ${RAFIKI_AUTH_WAIT_SECONDS} - TRUST_PROXY: true - REDIS_URL: redis://redis:6379/0 - depends_on: - - postgres - networks: - - testnet - ports: - - '${RAFIKI_AUTH_PORT}:${RAFIKI_AUTH_PORT}' - - '${RAFIKI_AUTH_ADMIN_PORT}:${RAFIKI_AUTH_ADMIN_PORT}' - restart: always - <<: *logging - - rafiki-backend: - image: ghcr.io/interledger/rafiki-backend:v1.1.2-beta - container_name: rafiki-backend - depends_on: - - postgres - - redis - environment: - NODE_ENV: ${NODE_ENV} - LOG_LEVEL: ${RAFIKI_BACKEND_LOG_LEVEL} - ADMIN_PORT: ${RAFIKI_BACKEND_ADMIN_PORT} - CONNECTOR_PORT: ${RAFIKI_BACKEND_CONNECTOR_PORT} - OPEN_PAYMENTS_PORT: ${RAFIKI_BACKEND_OPEN_PAYMENTS_PORT} - DATABASE_URL: ${RAFIKI_BACKEND_DATABASE_URL} - USE_TIGERBEETLE: ${RAFIKI_BACKEND_USE_TIGERBEETLE} - TIGERBEETLE_CLUSTER_ID: ${RAFIKI_BACKEND_TIGERBEETLE_CLUSTER_ID} - TIGERBEETLE_REPLICA_ADDRESSES: ${RAFIKI_BACKEND_TIGERBEETLE_REPLICA_ADDRESSES} - NONCE_REDIS_KEY: ${RAFIKI_BACKEND_NONCE_REDIS_KEY} - AUTH_SERVER_GRANT_URL: ${RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL} - AUTH_SERVER_INTROSPECTION_URL: ${RAFIKI_BACKEND_AUTH_SERVER_INTROSPECTION_URL} - ILP_ADDRESS: ${RAFIKI_BACKEND_ILP_ADDRESS} - STREAM_SECRET: ${RAFIKI_BACKEND_STREAM_SECRET} - ADMIN_KEY: ${RAFIKI_BACKEND_ADMIN_KEY} - OPEN_PAYMENTS_URL: ${RAFIKI_BACKEND_OPEN_PAYMENTS_URL} - REDIS_URL: ${RAFIKI_BACKEND_REDIS_URL} - WALLET_ADDRESS_URL: ${RAFIKI_BACKEND_WALLET_ADDRESS_URL} - WEBHOOK_URL: ${RAFIKI_BACKEND_WEBHOOK_URL} - WEBHOOK_TIMEOUT: ${RAFIKI_BACKEND_WEBHOOK_TIMEOUT} - SIGNATURE_SECRET: ${RAFIKI_BACKEND_SIGNATURE_SECRET} - EXCHANGE_RATES_URL: ${RAFIKI_BACKEND_EXCHANGE_RATES_URL} - TRUST_PROXY: true - ENABLE_AUTO_PEERING: true - AUTO_PEERING_SERVER_PORT: ${RAFIKI_BACKEND_AUTOPEERING_PORT} - ILP_CONNECTOR_URL: ${RAFIKI_BACKEND_ILP_CONNECTOR_ADDRESS} - INSTANCE_NAME: ${RAFIKI_BACKEND_INSTANCE_NAME} - SLIPPAGE: ${RAFIKI_BACKEND_SLIPPAGE} - ENABLE_TELEMETRY: ${RAFIKI_BACKEND_ENABLE_TELEMETRY} - LIVENET: ${RAFIKI_BACKEND_LIVENET} - KEY_ID: ${RAFIKI_BACKEND_KEY_ID} - WALLET_ADDRESS_REDIRECT_HTML_PAGE: ${RAFIKI_BACKEND_WALLET_ADDRESS_REDIRECT_HTML_PAGE} - networks: - - testnet - ports: - - '3010:80' - - '3011:3001' - - '${RAFIKI_BACKEND_AUTOPEERING_PORT}:${RAFIKI_BACKEND_AUTOPEERING_PORT}' - - '${RAFIKI_BACKEND_CONNECTOR_PORT}:${RAFIKI_BACKEND_CONNECTOR_PORT}' - privileged: true - restart: always - volumes: - - ../temp/:/workspace/temp/ - <<: *logging - - interledger-pay: - image: ghcr.io/interledger/interledger-pay:latest - container_name: interledger-pay - environment: - NODE_ENV: ${NODE_ENV} - PORT: ${INTERLEDGER_PAY_PORT} - KEY_ID: ${INTERLEDGER_PAY_KEY_ID} - PRIVATE_KEY: ${INTERLEDGER_PAY_PRIVATE_KEY} - WALLET_ADDRESS: ${INTERLEDGER_PAY_WALLET_ADDRESS} - REDIRECT_URL: ${INTERLEDGER_PAY_REDIRECT_URL} - INTERLEDGER_PAY_HOST: ${INTERLEDGER_PAY_HOST} - SESSION_COOKIE_SECRET_KEY: ${INTERLEDGER_PAY_SESSION_COOKIE_SECRET_KEY} - networks: - - testnet - restart: always - privileged: true - ports: - - '${INTERLEDGER_PAY_PORT}:${INTERLEDGER_PAY_PORT}' - <<: *logging - - rafiki-frontend: - image: ghcr.io/interledger/rafiki-frontend:v1.1.2-beta - container_name: rafiki-frontend - depends_on: - - rafiki-backend - environment: - PORT: ${RAFIKI_FRONTEND_PORT} - GRAPHQL_URL: ${RAFIKI_FRONTEND_GRAPHQL_URL} - OPEN_PAYMENTS_URL: ${RAFIKI_FRONTEND_OPEN_PAYMENTS_URL} - KRATOS_CONTAINER_PUBLIC_URL: 'http://kratos:4433' - KRATOS_BROWSER_PUBLIC_URL: 'https://admin.rafiki.money/kratos' - KRATOS_ADMIN_URL: 'http://kratos:4434/admin' - networks: - - testnet - restart: always - privileged: true - ports: - - '${RAFIKI_FRONTEND_PORT}:${RAFIKI_FRONTEND_PORT}' - <<: *logging - - tigerbeetle: - image: ghcr.io/tigerbeetle/tigerbeetle:0.16.60 - privileged: true - volumes: - - tigerbeetle-data:/var/lib/tigerbeetle - networks: - testnet: - ipv4_address: 10.5.0.50 - entrypoint: - - /bin/sh - - -c - - | - set -ex - DATA_FILE=/var/lib/tigerbeetle/cluster_0_replica_0.tigerbeetle - set +e - ls $$DATA_FILE - DATA_FILE_EXISTS="$$?" - set -e - echo $$DATA_FILE_EXISTS - if [ "$$DATA_FILE_EXISTS" != 0 ]; then - ./tigerbeetle format --cluster=0 --replica=0 --replica-count=1 $$DATA_FILE; - fi - hostname -i - ls /var/lib/tigerbeetle - ./tigerbeetle start --addresses=0.0.0.0:4342 $$DATA_FILE - - redis: - image: 'redis:7' - restart: unless-stopped - networks: - - testnet - - kratos: - image: 'oryd/kratos:v1.3.1' - privileged: true - ports: - - '4433:4433' - volumes: - - ../entrypoint.sh:/entrypoint.sh - - ../identity.schema.json:/etc/config/kratos/identity.schema.json - - ./kratos.yml:/etc/config/kratos/kratos.yml - entrypoint: ['/entrypoint.sh'] - networks: - - testnet - -networks: - testnet: - driver: bridge - ipam: - config: - - subnet: 10.5.0.0/24 - gateway: 10.5.0.1 - -volumes: - pg-data: - tigerbeetle-data: # named volumes can be managed easier using docker-compose diff --git a/docker/prod/kratos.yml b/docker/prod/kratos.yml deleted file mode 100644 index 386d43672..000000000 --- a/docker/prod/kratos.yml +++ /dev/null @@ -1,91 +0,0 @@ -version: v0.13.0 - -dsn: postgres://kratos:kratos@postgres:5432/kratos?sslmode=disable&max_conns=20&max_idle_conns=4 - -serve: - public: - base_url: https://admin.rafiki.money/kratos - cors: - enabled: true - admin: - base_url: http://kratos:4434/ - -selfservice: - default_browser_return_url: https://admin.rafiki.money/ - allowed_return_urls: - - https://admin.rafiki.money - - methods: - link: - config: - lifespan: 1h - base_url: https://admin.rafiki.money/kratos - enabled: true - password: - enabled: true - - flows: - error: - ui_url: https://admin.rafiki.money/error - - settings: - ui_url: https://admin.rafiki.money/settings - privileged_session_max_age: 15m - required_aal: highest_available - - recovery: - enabled: true - ui_url: https://admin.rafiki.money/auth/recovery - use: link - after: - hooks: - - hook: revoke_active_sessions - - verification: - enabled: false - - logout: - after: - default_browser_return_url: https://admin.rafiki.money/auth - - login: - ui_url: https://admin.rafiki.money/auth/login - lifespan: 10m - - registration: - enabled: false - -log: - level: debug - format: json - leak_sensitive_values: true - -secrets: - cookie: - - PLEASE-CHANGE-ME-I-AM-VERY-INSECURE - cipher: - - 32-LONG-SECRET-NOT-SECURE-AT-ALL - -ciphers: - algorithm: xchacha20-poly1305 - -hashers: - algorithm: bcrypt - bcrypt: - cost: 8 - -identity: - schemas: - - id: default - url: file:///etc/config/kratos/identity.schema.json - -courier: - smtp: - connection_uri: smtps://test:test@mailslurper:1025/?skip_ssl_verify=true - -session: - lifespan: 1h - cookie: - persistent: false - same_site: Strict - path: / diff --git a/docker/temp/private-key.pem b/docker/temp/private-key.pem deleted file mode 100644 index 43fefaf8a..000000000 --- a/docker/temp/private-key.pem +++ /dev/null @@ -1,3 +0,0 @@ ------BEGIN PRIVATE KEY----- -MC4CAQAwBQYDK2VwBCIEIIZFs7Y4AoIP/4WcVtKt74Uim4mxnZhV9zQ5RSnQen5u ------END PRIVATE KEY----- diff --git a/local/.env.example b/local/.env.example new file mode 100644 index 000000000..f5f83619c --- /dev/null +++ b/local/.env.example @@ -0,0 +1,116 @@ +# Testnet local docker-compose environment file (example) +# Copy to .env and adjust as needed for your machine. +# +# By default, all GateHub variables point to the local MockGatehub container +# (no real credentials needed). To use the real GateHub Sandbox instead, see +# the "Real GateHub Sandbox overrides" section below. + +# --------------------------------------------------------------------------- +# General build / dev flags +# --------------------------------------------------------------------------- + +# DEV_MODE — Controls how the wallet and boutique backend containers start. +# true (default) — hot-reload via nodemon; source changes restart the server +# automatically. Best for day-to-day development. +# debug — runs the pre-built server with the Node inspector open on +# DEBUG_PORT (default 9229 / 9230), so you can attach a +# debugger from your IDE. +# lite — runs the pre-built server directly (no watcher, no +# debugger). Useful for quick smoke-testing of production- +# like behaviour without the overhead of a file watcher. +# Note: frontend containers always run in dev/HMR mode regardless of this flag. +DEV_MODE=true + +# NODE_ENV — Standard Node.js environment flag, passed to every service. +# Defaults to "development" in docker-compose.yml when unset. +# development (default) — enables error stack traces in API responses, +# allows HTTP (not just HTTPS) for internal service +# calls, relaxes cookie security (secure=false, +# sameSite=lax), and enables the /signup auth route. +# production — hides stack traces, enforces HTTPS and secure +# cookies (secure=true, sameSite=none), and may +# disable certain non-production endpoints. +# For local development you almost never need to change this. +#NODE_ENV=development + +# Wallet Backend secrets and config +AUTH_IDENTITY_SERVER_SECRET=dev_identity_server_secret +SENDGRID_API_KEY= +FROM_EMAIL= +SEND_EMAIL=false + +# --------------------------------------------------------------------------- +# GateHub integration +# --------------------------------------------------------------------------- +# Two modes are supported: +# +# 1. MockGatehub (default) — everything works out of the box. +# The wallet backend talks to the mockgatehub container inside the +# compose network. No real credentials required. +# +# 2. Real GateHub Sandbox — for full KYC / fiat on-off ramp testing. +# Create an account at https://sandbox.gatehub.net (or contact +# timea@interledger.foundation) to obtain the values below, then +# uncomment the "Real GateHub Sandbox overrides" block. +# --------------------------------------------------------------------------- + +# --- Mock defaults (active when the override block below is commented) ----- +GATEHUB_API_BASE_URL=http://mockgatehub:8080 +GATEHUB_ENV=sandbox +GATEHUB_IFRAME_BASE_URL=http://localhost:8080 +GATEHUB_ACCESS_KEY=mock_access_key +GATEHUB_SECRET_KEY=mock_secret_key +GATEHUB_WEBHOOK_SECRET=mock_webhook_secret_please_change +GATEHUB_GATEWAY_UUID=mock-gateway-uuid +GATEHUB_SETTLEMENT_WALLET_ADDRESS=$ilp.interledger-test.dev/interledger +GATEHUB_ORG_ID=mock-org-id +GATEHUB_CARD_APP_ID=mock-card-app-id + +# --- Real GateHub Sandbox overrides ---------------------------------------- +# To use the real sandbox, comment out the mock block above and uncomment the +# lines below, filling in your credentials. +# +# IMPORTANT: Leave GATEHUB_API_BASE_URL **unset** (or comment it out). +# When it is absent the wallet backend auto-constructs the correct sub-domain +# URLs (api.sandbox.gatehub.net, managed-ramp.sandbox.gatehub.net, etc.) +# based on GATEHUB_ENV. +# +# GATEHUB_ENV=sandbox +# GATEHUB_IFRAME_BASE_URL=https://sandbox.gatehub.net +# GATEHUB_ACCESS_KEY= +# GATEHUB_SECRET_KEY= +# GATEHUB_WEBHOOK_SECRET= +# GATEHUB_GATEWAY_UUID= +# GATEHUB_SETTLEMENT_WALLET_ADDRESS= +# GATEHUB_ORG_ID= +# GATEHUB_CARD_APP_ID= + +# Wallet backend rate limits and product codes (optional) +RATE_LIMIT=100 +RATE_LIMIT_LEVEL=per_minute +GATEHUB_ACCOUNT_PRODUCT_CODE=DEFAULT +GATEHUB_CARD_PRODUCT_CODE=DEFAULT +GATEHUB_NAME_ON_CARD=TEST USER +GATEHUB_CARD_PP_PREFIX=ILF + +# Card service links (only used when cards are enabled) +CARD_DATA_HREF=http://rafiki-card-service:3007/card-data +CARD_PIN_HREF=http://rafiki-card-service:3007/card-pin + +# Stripe (optional for local) +STRIPE_SECRET_KEY= +STRIPE_WEBHOOK_SECRET= +USE_STRIPE=false + +# Admin/shared IDs and secrets +OPERATOR_TENANT_ID=f829c064-762a-4430-ac5d-7af5df198551 +ADMIN_API_SECRET=secret-key +RAFIKI_SIGNATURE_SECRET=327132b5-99e9-4eb8-8a25-2b7d7738ece1 + +# Wallet Frontend public envs +NEXT_PUBLIC_BACKEND_URL=http://localhost:3003 +NEXT_PUBLIC_AUTH_HOST=http://localhost:3006 +NEXT_PUBLIC_OPEN_PAYMENTS_HOST=http://localhost:3010 +NEXT_PUBLIC_GATEHUB_ENV=sandbox +NEXT_PUBLIC_THEME=light +NEXT_PUBLIC_FEATURES_ENABLED=false diff --git a/local/.gitignore b/local/.gitignore new file mode 100644 index 000000000..9e06ea81e --- /dev/null +++ b/local/.gitignore @@ -0,0 +1 @@ +pg-data \ No newline at end of file diff --git a/local/docker-compose.yml b/local/docker-compose.yml new file mode 100644 index 000000000..0745e0abe --- /dev/null +++ b/local/docker-compose.yml @@ -0,0 +1,287 @@ +services: + postgres: + container_name: postgres-local + image: 'postgres:15' + environment: + POSTGRES_USER: ${POSTGRES_USER:-postgres} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-password} + ports: + - '15434:5432' + restart: unless-stopped + networks: + - testnet + volumes: + - pg-data:/var/lib/postgresql/data + - ./init/dbinit.sql:/docker-entrypoint-initdb.d/init.sql + + # MockGatehub - Mock Gatehub API service for local development + mockgatehub: + container_name: mockgatehub-local + image: ghcr.io/interledger/mockgatehub:1.12.3 + ports: + - '8080:8080' + environment: + MOCKGATEHUB_REDIS_URL: ${MOCKGATEHUB_REDIS_URL:-redis://redis:6379/1} + MOCKGATEHUB_REDIS_DB: ${MOCKGATEHUB_REDIS_DB:-1} + MOCKGATEHUB_VALID_CREDENTIALS: ${GATEHUB_ACCESS_KEY:-local-test-app-id}:${GATEHUB_SECRET_KEY:-local-test-app-secret} + WEBHOOK_URL: ${MOCKGATEHUB_WEBHOOK_URL:-http://wallet-backend:3003/gatehub-webhooks} + WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET:-6d6f636b5f776562686f6f6b5f736563726574} + depends_on: + - redis + restart: always + networks: + - testnet + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/health"] + interval: 10s + timeout: 5s + retries: 3 + + # Wallet + wallet-backend: + container_name: wallet-backend-local + build: + context: ../ + args: + DEV_MODE: ${DEV_MODE:-true} + dockerfile: ./packages/wallet/backend/Dockerfile.dev + depends_on: + - postgres + - rafiki-backend + - redis + - mockgatehub + volumes: + - ../packages/wallet/backend:/home/testnet/packages/wallet/backend + - ../packages/wallet/shared:/home/testnet/packages/wallet/shared + environment: + NODE_ENV: ${NODE_ENV:-development} + PORT: ${WALLET_BACKEND_PORT:-3003} + DEBUG_PORT: ${WALLET_BACKEND_DEBUG_PORT:-9229} + DATABASE_URL: ${WALLET_BACKEND_DATABASE_URL:-postgres://wallet_backend:wallet_backend@postgres-local/wallet_backend} + COOKIE_NAME: ${WALLET_BACKEND_COOKIE_NAME:-testnet.cookie} + COOKIE_PASSWORD: ${WALLET_BACKEND_COOKIE_PASSWORD:-testnet.cookie.password.super.secret.ilp} + COOKIE_TTL: ${WALLET_BACKEND_COOKIE_TTL:-2630000} + OPEN_PAYMENTS_HOST: ${WALLET_BACKEND_OPEN_PAYMENTS_HOST:-https://rafiki-backend} + GRAPHQL_ENDPOINT: ${WALLET_BACKEND_GRAPHQL_ENDPOINT:-http://rafiki-backend:3001/graphql} + AUTH_GRAPHQL_ENDPOINT: ${WALLET_BACKEND_AUTH_GRAPHQL_ENDPOINT:-http://rafiki-auth:3008/graphql} + AUTH_DOMAIN: ${WALLET_BACKEND_AUTH_DOMAIN:-http://rafiki-auth:3006} + AUTH_IDENTITY_SERVER_SECRET: ${AUTH_IDENTITY_SERVER_SECRET:-auth-secret-key-12345} + RAFIKI_WEBHOOK_SIGNATURE_SECRET: ${RAFIKI_SIGNATURE_SECRET:-327132b5-99e9-4eb8-8a25-2b7d7738ece1} + SENDGRID_API_KEY: ${SENDGRID_API_KEY:-} + FROM_EMAIL: ${FROM_EMAIL:-noreply@testnet.local} + SEND_EMAIL: ${SEND_EMAIL:-false} + REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} + GATEHUB_API_BASE_URL: ${GATEHUB_API_BASE_URL:-http://mockgatehub:8080} + GATEHUB_ENV: ${GATEHUB_ENV:-sandbox} + GATEHUB_IFRAME_BASE_URL: ${GATEHUB_IFRAME_BASE_URL:-http://localhost:8080} + GATEHUB_ACCESS_KEY: ${GATEHUB_ACCESS_KEY:-local-test-app-id} + GATEHUB_SECRET_KEY: ${GATEHUB_SECRET_KEY:-local-test-app-secret} + GATEHUB_WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET:-6d6f636b5f776562686f6f6b5f736563726574} + GATEHUB_GATEWAY_UUID: ${GATEHUB_GATEWAY_UUID:-mock_gateway_uuid} + GATEHUB_SETTLEMENT_WALLET_ADDRESS: ${GATEHUB_SETTLEMENT_WALLET_ADDRESS:-rMockSettlementAddress} + GATEHUB_ORG_ID: ${GATEHUB_ORG_ID:-mock_org_id} + GATEHUB_CARD_APP_ID: ${GATEHUB_CARD_APP_ID:-mock_card_app_id} + RATE_LIMIT: ${RATE_LIMIT:-false} + RATE_LIMIT_LEVEL: ${RATE_LIMIT_LEVEL:-LAX} + GATEHUB_ACCOUNT_PRODUCT_CODE: ${GATEHUB_ACCOUNT_PRODUCT_CODE:-account_product} + GATEHUB_CARD_PRODUCT_CODE: ${GATEHUB_CARD_PRODUCT_CODE:-card_product} + GATEHUB_NAME_ON_CARD: ${GATEHUB_NAME_ON_CARD:-TestnetUser} + GATEHUB_CARD_PP_PREFIX: ${GATEHUB_CARD_PP_PREFIX:-TEST} + CARD_DATA_HREF: ${CARD_DATA_HREF:-https://card.example.com/data} + CARD_PIN_HREF: ${CARD_PIN_HREF:-https://card.example.com/pin} + STRIPE_SECRET_KEY: ${STRIPE_SECRET_KEY:-notset} + STRIPE_WEBHOOK_SECRET: ${STRIPE_WEBHOOK_SECRET:-notset} + USE_STRIPE: ${USE_STRIPE:-false} + OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} + ADMIN_API_SECRET: ${ADMIN_API_SECRET:-secret-key} + ADMIN_SIGNATURE_VERSION: ${ADMIN_SIGNATURE_VERSION:-1} + WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET:-6d6f636b5f776562686f6f6b5f736563726574} + restart: always + networks: + - testnet + ports: + - '3003:3003' + - '9229:9229' # Map debugger port to local machine's port 9229 + + wallet-frontend: + container_name: wallet-frontend-local + build: + context: .. + args: + DEV_MODE: ${DEV_MODE:-true} + NEXT_PUBLIC_BACKEND_URL: ${NEXT_PUBLIC_BACKEND_URL:-http://localhost:3003} + NEXT_PUBLIC_AUTH_HOST: ${NEXT_PUBLIC_AUTH_HOST:-http://localhost:3006} + NEXT_PUBLIC_OPEN_PAYMENTS_HOST: ${NEXT_PUBLIC_OPEN_PAYMENTS_HOST:-http://localhost:3010} + NEXT_PUBLIC_GATEHUB_ENV: ${NEXT_PUBLIC_GATEHUB_ENV:-sandbox} + NEXT_PUBLIC_THEME: ${NEXT_PUBLIC_THEME:-light} + NEXT_PUBLIC_FEATURES_ENABLED: ${NEXT_PUBLIC_FEATURES_ENABLED:-false} + dockerfile: ./packages/wallet/frontend/Dockerfile.dev + depends_on: + - wallet-backend + volumes: + - ../packages/wallet/frontend:/home/testnet/packages/wallet/frontend + - ../packages/wallet/shared:/home/testnet/packages/wallet/shared + environment: + NODE_ENV: ${NODE_ENV:-development} + BACKEND_URL: ${WALLET_FRONTEND_BACKEND_URL:-http://wallet-backend:3003} + NEXT_PUBLIC_BACKEND_URL: ${NEXT_PUBLIC_BACKEND_URL:-http://localhost:3003} + NEXT_PUBLIC_AUTH_HOST: ${NEXT_PUBLIC_AUTH_HOST:-http://localhost:3006} + NEXT_PUBLIC_OPEN_PAYMENTS_HOST: ${NEXT_PUBLIC_OPEN_PAYMENTS_HOST:-http://localhost:3010} + NEXT_PUBLIC_GATEHUB_ENV: ${NEXT_PUBLIC_GATEHUB_ENV:-sandbox} + NEXT_PUBLIC_THEME: ${NEXT_PUBLIC_THEME:-light} + NEXT_PUBLIC_FEATURES_ENABLED: ${NEXT_PUBLIC_FEATURES_ENABLED:-false} + restart: always + networks: + - testnet + ports: + - '4003:4003' + + # Rafiki + rafiki-auth: + container_name: rafiki-auth-local + image: ghcr.io/interledger/rafiki-auth:v2.2.0-beta + restart: always + networks: + - testnet + ports: + - '3006:3006' + - '3008:3008' + environment: + AUTH_PORT: ${RAFIKI_AUTH_PORT:-3006} + INTROSPECTION_PORT: ${RAFIKI_AUTH_INTROSPECTION_PORT:-3007} + ADMIN_PORT: ${RAFIKI_AUTH_ADMIN_PORT:-3008} + NODE_ENV: ${NODE_ENV:-development} + AUTH_SERVER_URL: ${RAFIKI_AUTH_SERVER_URL:-http://rafiki-auth:3006} + AUTH_DATABASE_URL: ${RAFIKI_AUTH_DATABASE_URL:-postgresql://rafiki_auth:rafiki_auth@postgres-local/rafiki_auth} + IDENTITY_SERVER_URL: ${RAFIKI_AUTH_IDENTITY_SERVER_URL:-http://wallet-frontend:4003/grant-interactions} + IDENTITY_SERVER_SECRET: ${AUTH_IDENTITY_SERVER_SECRET:-auth-secret-key-12345} + COOKIE_KEY: ${AUTH_COOKIE_KEY:-8fd398393c47dd27a3167d9c081c094f} + INTERACTION_COOKIE_SAME_SITE: ${AUTH_INTERACTION_COOKIE_SAME_SITE:-lax} + WAIT_SECONDS: ${RAFIKI_AUTH_WAIT_SECONDS:-1} + REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} + OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} + ADMIN_API_SECRET: ${ADMIN_API_SECRET:-secret-key} + ADMIN_SIGNATURE_VERSION: ${ADMIN_SIGNATURE_VERSION:-1} + depends_on: + - postgres + + rafiki-backend: + container_name: rafiki-backend-local + image: ghcr.io/interledger/rafiki-backend:v2.2.0-beta + restart: always + privileged: true + volumes: + - ../temp/:/workspace/temp/ + ports: + - '3010:80' + - '3011:3001' + - '3005:3005' + - '3002:3002' + networks: + - testnet + environment: + NODE_ENV: ${NODE_ENV:-development} + LOG_LEVEL: ${LOG_LEVEL:-debug} + ADMIN_PORT: ${RAFIKI_BACKEND_ADMIN_PORT:-3001} + CONNECTOR_PORT: ${RAFIKI_BACKEND_CONNECTOR_PORT:-3002} + OPEN_PAYMENTS_PORT: ${RAFIKI_BACKEND_OPEN_PAYMENTS_PORT:-80} + DATABASE_URL: ${RAFIKI_BACKEND_DATABASE_URL:-postgresql://rafiki_backend:rafiki_backend@postgres-local/rafiki_backend} + USE_TIGERBEETLE: ${RAFIKI_BACKEND_USE_TIGERBEETLE:-false} + NONCE_REDIS_KEY: ${RAFIKI_BACKEND_NONCE_REDIS_KEY:-test} + AUTH_SERVER_GRANT_URL: ${RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL:-http://rafiki-auth:3006} + AUTH_SERVER_INTROSPECTION_URL: ${RAFIKI_BACKEND_AUTH_SERVER_INTROSPECTION_URL:-http://rafiki-auth:3007} + ILP_ADDRESS: ${RAFIKI_BACKEND_ILP_ADDRESS:-test.net} + ILP_CONNECTOR_URL: ${RAFIKI_BACKEND_ILP_CONNECTOR_URL:-http://127.0.0.1:3002} + STREAM_SECRET: ${RAFIKI_BACKEND_STREAM_SECRET:-BjPXtnd00G2mRQwP/8ZpwyZASOch5sUXT5o0iR5b5wU=} + ADMIN_KEY: ${RAFIKI_BACKEND_ADMIN_KEY:-admin} + OPEN_PAYMENTS_URL: ${RAFIKI_BACKEND_OPEN_PAYMENTS_URL:-https://rafiki-backend} + REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} + WALLET_ADDRESS_URL: ${RAFIKI_BACKEND_WALLET_ADDRESS_URL:-https://rafiki-backend/.well-known/pay} + WEBHOOK_URL: ${RAFIKI_BACKEND_WEBHOOK_URL:-http://wallet-backend:3003/webhooks} + WEBHOOK_TIMEOUT: ${RAFIKI_BACKEND_WEBHOOK_TIMEOUT:-60000} + SIGNATURE_SECRET: ${RAFIKI_SIGNATURE_SECRET:-327132b5-99e9-4eb8-8a25-2b7d7738ece1} + EXCHANGE_RATES_URL: ${RAFIKI_BACKEND_EXCHANGE_RATES_URL:-http://wallet-backend:3003/rates} + ENABLE_AUTO_PEERING: ${RAFIKI_BACKEND_ENABLE_AUTO_PEERING:-true} + AUTO_PEERING_SERVER_PORT: ${RAFIKI_BACKEND_AUTO_PEERING_SERVER_PORT:-3005} + INSTANCE_NAME: ${RAFIKI_BACKEND_INSTANCE_NAME:-Testnet Wallet} + SLIPPAGE: ${RAFIKI_BACKEND_SLIPPAGE:-0.01} + KEY_ID: ${RAFIKI_BACKEND_KEY_ID:-rafiki} + WALLET_ADDRESS_REDIRECT_HTML_PAGE: ${RAFIKI_BACKEND_WALLET_ADDRESS_REDIRECT_HTML_PAGE:-http://localhost:4003/account?walletAddress=%ewa} + OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} + ADMIN_API_SECRET: ${ADMIN_API_SECRET:-secret-key} + ADMIN_SIGNATURE_VERSION: ${ADMIN_SIGNATURE_VERSION:-1} + AUTH_SERVICE_API_URL: ${RAFIKI_BACKEND_AUTH_SERVICE_API_URL:-http://rafiki-auth:3011} + CARD_SERVICE_URL: ${RAFIKI_BACKEND_CARD_SERVICE_URL:-http://rafiki-card-service:3007} + CARD_WEBHOOK_SERVICE_URL: ${RAFIKI_BACKEND_CARD_WEBHOOK_SERVICE_URL:-http://rafiki-card-service:3007/webhook} + POS_SERVICE_URL: ${RAFIKI_BACKEND_POS_SERVICE_URL:-http://rafiki-pos-service:3014} + POS_WEBHOOK_SERVICE_URL: ${RAFIKI_BACKEND_POS_WEBHOOK_SERVICE_URL:-http://rafiki-pos-service:3014/webhook} + depends_on: + - postgres + - redis + + rafiki-frontend: + container_name: rafiki-frontend-local + image: ghcr.io/interledger/rafiki-frontend:v2.2.0-beta + depends_on: + - rafiki-backend + restart: always + privileged: true + ports: + - '3012:3012' + networks: + - testnet + environment: + PORT: ${RAFIKI_FRONTEND_PORT:-3012} + GRAPHQL_URL: ${GRAPHQL_URL:-http://rafiki-backend:3001/graphql} + OPEN_PAYMENTS_URL: ${RAFIKI_FRONTEND_OPEN_PAYMENTS_URL:-https://rafiki-backend/} + ENABLE_INSECURE_MESSAGE_COOKIE: ${RAFIKI_FRONTEND_ENABLE_INSECURE_MESSAGE_COOKIE:-true} + AUTH_ENABLED: ${RAFIKI_FRONTEND_AUTH_ENABLED:-false} + SIGNATURE_VERSION: ${RAFIKI_FRONTEND_SIGNATURE_VERSION:-1} + + rafiki-card-service: + container_name: rafiki-card-service-local + image: ghcr.io/interledger/rafiki-card-service:v2.2.0-beta + restart: always + privileged: true + networks: + - testnet + ports: + - '3007:3007' + environment: + NODE_ENV: ${NODE_ENV:-development} + LOG_LEVEL: ${LOG_LEVEL:-debug} + CARD_SERVICE_PORT: ${RAFIKI_CARD_SERVICE_PORT:-3007} + REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} + GRAPHQL_URL: ${GRAPHQL_URL:-http://rafiki-backend:3001/graphql} + TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} + TENANT_SECRET: ${ADMIN_API_SECRET:-secret-key} + TENANT_SIGNATURE_VERSION: ${RAFIKI_CARD_SERVICE_TENANT_SIGNATURE_VERSION:-1} + + redis: + container_name: redis + image: 'redis:7-alpine' + restart: unless-stopped + networks: + - testnet + ports: + - '6379:6379' + + mailslurper: + container_name: mailslurper-local + image: oryd/mailslurper:latest-smtps + ports: + - '4436:4436' + - '4437:4437' + networks: + - testnet + +networks: + testnet: + driver: bridge + ipam: + config: + - subnet: 10.5.0.0/24 + gateway: 10.5.0.1 + +volumes: + pg-data: diff --git a/docker/dbinit.sql b/local/init/dbinit.sql similarity index 100% rename from docker/dbinit.sql rename to local/init/dbinit.sql diff --git a/local/scripts/rafiki-setup.js b/local/scripts/rafiki-setup.js new file mode 100644 index 000000000..053ce48ca --- /dev/null +++ b/local/scripts/rafiki-setup.js @@ -0,0 +1,379 @@ +#!/usr/bin/env node +/** + * Configure Rafiki (local docker stack) with a tenant + assets. + * - Reads values from docker/local/.env when present (process.env takes priority) + * - Creates the operator tenant (idpConsentUrl + idpSecret) + * - Ensures assets exist for the Testnet wallet + * + * Run after `docker compose up -d` from docker/local: + * node rafiki-setup.js + */ + +const fs = require('fs') +const path = require('path') +const crypto = require('crypto') + +// ---- helpers --------------------------------------------------------------- +function loadDotEnv(envPath) { + const result = {} + if (!fs.existsSync(envPath)) return result + const lines = fs.readFileSync(envPath, 'utf8').split(/\r?\n/) + for (const line of lines) { + if (!line || line.trim().startsWith('#')) continue + const idx = line.indexOf('=') + if (idx === -1) continue + const key = line.slice(0, idx).trim() + const value = line.slice(idx + 1).trim() + result[key] = value + } + return result +} + +function canonicalize(value) { + if (value === null || typeof value !== 'object') return value + if (Array.isArray(value)) return value.map(canonicalize) + const sortedKeys = Object.keys(value).sort() + const obj = {} + for (const key of sortedKeys) { + obj[key] = canonicalize(value[key]) + } + return obj +} + +function canonicalizeAndStringify(value) { + return JSON.stringify(canonicalize(value)) +} + +function buildEnv() { + const envPath = path.join(__dirname, '.env') + const fileEnv = loadDotEnv(envPath) + const get = (key, fallback) => + process.env[key] ?? fileEnv[key] ?? fallback + + return { + GRAPHQL_ENDPOINT: get('GRAPHQL_ENDPOINT', 'http://localhost:3011/graphql'), + ADMIN_API_SECRET: get('ADMIN_API_SECRET', 'secret-key'), + ADMIN_SIGNATURE_VERSION: get('ADMIN_SIGNATURE_VERSION', '1'), + OPERATOR_TENANT_ID: get( + 'OPERATOR_TENANT_ID', + 'f829c064-762a-4430-ac5d-7af5df198551' + ), + AUTH_IDENTITY_SERVER_SECRET: get( + 'AUTH_IDENTITY_SERVER_SECRET', + 'auth-secret-key-12345' + ), + IDP_CONSENT_URL: get( + 'IDP_CONSENT_URL', + 'http://wallet-frontend:4003/grant-interactions' + ) + } +} + +function signRequest({ query, variables, operationName }, env, timestamp) { + const payload = `${timestamp}.${canonicalizeAndStringify({ + variables: variables ?? {}, + operationName, + query + })}` + const hmac = crypto.createHmac('sha256', env.ADMIN_API_SECRET) + hmac.update(payload) + const digest = hmac.digest('hex') + return `t=${timestamp}, v${env.ADMIN_SIGNATURE_VERSION}=${digest}` +} + +async function graphqlRequest({ query, variables, operationName }, env) { + const timestamp = Date.now() + const signature = signRequest({ query, variables, operationName }, env, timestamp) + const body = JSON.stringify({ query, variables, operationName }) + + const response = await fetch(env.GRAPHQL_ENDPOINT, { + method: 'POST', + headers: { + 'content-type': 'application/json', + signature, + 'tenant-id': env.OPERATOR_TENANT_ID + }, + body + }) + + const data = await response.json() + if (data.errors && data.errors.length) { + const message = data.errors.map((e) => e.message).join('\n') + throw new Error(message) + } + return data.data +} + +// ---- operations ----------------------------------------------------------- +const getTenantQuery = /* GraphQL */ ` + query GetTenant($id: String!) { + tenant(id: $id) { + id + publicName + idpConsentUrl + idpSecret + } + } +` + +const createTenantMutation = /* GraphQL */ ` + mutation CreateTenant($input: CreateTenantInput!) { + createTenant(input: $input) { + tenant { + id + publicName + idpConsentUrl + idpSecret + } + } + } +` + +const updateTenantMutation = /* GraphQL */ ` + mutation UpdateTenant($input: UpdateTenantInput!) { + updateTenant(input: $input) { + tenant { + id + publicName + idpConsentUrl + idpSecret + } + } + } +` + +const listAssetsQuery = /* GraphQL */ ` + query Assets($first: Int = 100) { + assets(first: $first) { + edges { + node { + id + code + scale + } + } + } + } +` + +const createAssetMutation = /* GraphQL */ ` + mutation CreateAsset($input: CreateAssetInput!) { + createAsset(input: $input) { + asset { + id + code + scale + } + } + } +` + +const getAssetByCodeAndScaleQuery = /* GraphQL */ ` + query AssetByCodeAndScale($code: String!, $scale: UInt8!) { + assetByCodeAndScale(code: $code, scale: $scale) { + id + code + scale + } + } +` + +const depositAssetLiquidityMutation = /* GraphQL */ ` + mutation DepositAssetLiquidity($input: DepositAssetLiquidityInput!) { + depositAssetLiquidity(input: $input) { + success + } + } +` + +const assetsToEnsure = [ + { code: 'USD', scale: 2 }, + { code: 'EUR', scale: 2 }, + { code: 'GBP', scale: 2 }, + { code: 'ZAR', scale: 2 }, + { code: 'MXN', scale: 2 }, + { code: 'SGD', scale: 2 }, + { code: 'CAD', scale: 2 }, + { code: 'EGG', scale: 2 }, + { code: 'PEB', scale: 2 }, + { code: 'PKR', scale: 2 } +] + +async function ensureTenant(env) { + try { + const existing = await graphqlRequest( + { query: getTenantQuery, variables: { id: env.OPERATOR_TENANT_ID } }, + env + ) + if (existing?.tenant) { + console.log( + `Tenant already present: ${existing.tenant.id} (consent URL ${existing.tenant.idpConsentUrl})` + ) + if (!existing.tenant.idpConsentUrl || !existing.tenant.idpSecret) { + console.log('Updating tenant idp fields...') + await graphqlRequest( + { + query: updateTenantMutation, + variables: { + input: { + id: env.OPERATOR_TENANT_ID, + idpConsentUrl: env.IDP_CONSENT_URL, + idpSecret: env.AUTH_IDENTITY_SERVER_SECRET + } + } + }, + env + ) + console.log('Tenant idp fields updated') + } + return + } + } catch (err) { + // continue and try to create + console.log('Tenant lookup failed, attempting to create...', err.message) + } + + console.log('Creating tenant...') + try { + const created = await graphqlRequest( + { + query: createTenantMutation, + variables: { + input: { + id: env.OPERATOR_TENANT_ID, + publicName: 'Testnet Wallet', + apiSecret: env.ADMIN_API_SECRET, + idpSecret: env.AUTH_IDENTITY_SERVER_SECRET, + idpConsentUrl: env.IDP_CONSENT_URL + } + } + }, + env + ) + console.log('Tenant created:', created.createTenant.tenant) + } catch (err) { + if ( + typeof err.message === 'string' && + err.message.toLowerCase().includes('duplicate') + ) { + console.log('Tenant already exists (duplicate key), continuing...') + return + } + throw err + } +} + +async function ensureAssets(env) { + let current = { assets: { edges: [] } } + try { + current = await graphqlRequest( + { query: listAssetsQuery, variables: { first: 200 } }, + env + ) + } catch (err) { + console.log('Asset list failed, continuing to create assets...', err.message) + } + + const existingCodes = new Set( + (current?.assets?.edges ?? []).map((e) => e.node.code) + ) + + for (const asset of assetsToEnsure) { + if (existingCodes.has(asset.code)) { + console.log(`Asset ${asset.code} already exists`) + continue + } + console.log(`Creating asset ${asset.code}...`) + try { + await graphqlRequest( + { + query: createAssetMutation, + variables: { + input: { + code: asset.code, + scale: asset.scale + } + } + }, + env + ) + console.log(`Asset ${asset.code} created`) + } catch (err) { + const msg = (err.message || '').toLowerCase() + if (msg.includes('already exists') || msg.includes('duplicate')) { + console.log(`Asset ${asset.code} already exists (api), continuing...`) + continue + } + throw err + } + } +} + +// Deposit liquidity for all assets (100000 units per asset, converted to minor units by scale) +async function ensureLiquidity(env) { + console.log('Ensuring asset liquidity...') + + for (const asset of assetsToEnsure) { + let node + try { + const res = await graphqlRequest( + { + query: getAssetByCodeAndScaleQuery, + variables: { code: asset.code, scale: asset.scale } + }, + env + ) + node = res?.assetByCodeAndScale + } catch (err) { + console.log(`Lookup failed for ${asset.code}:`, err.message) + continue + } + + if (!node?.id) { + console.log(`Skipping liquidity for ${asset.code}: asset id not found`) + continue + } + + // Amount in minor units: 100000 * 10^scale + const amount = BigInt(100000) * BigInt(10) ** BigInt(node.scale) + + console.log(`Depositing liquidity for ${asset.code}: ${amount.toString()} (scale ${node.scale})`) + try { + const res = await graphqlRequest( + { + query: depositAssetLiquidityMutation, + variables: { + input: { + id: crypto.randomUUID(), + assetId: node.id, + amount: amount.toString(), + idempotencyKey: crypto.randomUUID() + } + } + }, + env + ) + + if (!res?.depositAssetLiquidity?.success) { + console.log(`Liquidity deposit failed for ${asset.code}`) + } else { + console.log(`Liquidity deposited for ${asset.code}`) + } + } catch (err) { + console.log(`Liquidity deposit error for ${asset.code}:`, err.message) + } + } +} + +// ---- main ----------------------------------------------------------------- +;(async function main() { + const env = buildEnv() + console.log('Rafiki admin endpoint:', env.GRAPHQL_ENDPOINT) + await ensureTenant(env) + await ensureAssets(env) + await ensureLiquidity(env) + console.log('✅ Rafiki configuration complete') +})().catch((err) => { + console.error('Setup failed:', err.message) + process.exit(1) +}) diff --git a/packages/wallet/backend/src/config/env.ts b/packages/wallet/backend/src/config/env.ts index 92b0f60d3..62dc86140 100644 --- a/packages/wallet/backend/src/config/env.ts +++ b/packages/wallet/backend/src/config/env.ts @@ -13,6 +13,7 @@ const envSchema = z.object({ .default('testnet.cookie.password.super.secret.ilp'), // min. 32 chars COOKIE_TTL: z.coerce.number().default(2630000), // 1 month GATEHUB_ENV: z.enum(['production', 'sandbox']).default('sandbox'), + GATEHUB_API_BASE_URL: z.string().optional(), GATEHUB_ACCESS_KEY: z.string().default('GATEHUB_ACCESS_KEY'), GATEHUB_SECRET_KEY: z.string().default('GATEHUB_SECRET_KEY'), GATEHUB_SEPA_ACCESS_KEY: z.string().optional(), diff --git a/packages/wallet/backend/src/gatehub/client.ts b/packages/wallet/backend/src/gatehub/client.ts index dc5abd46b..92a75055a 100644 --- a/packages/wallet/backend/src/gatehub/client.ts +++ b/packages/wallet/backend/src/gatehub/client.ts @@ -97,18 +97,32 @@ export class GateHubClient { } get apiUrl() { + // If GATEHUB_API_BASE_URL is set (e.g., for local development with mockgatehub), + // use it instead of constructing the URL from mainUrl + if (this.env.GATEHUB_API_BASE_URL) { + return this.env.GATEHUB_API_BASE_URL + } return `https://api.${this.mainUrl}` } get rampUrl() { + if (this.env.GATEHUB_API_BASE_URL) { + return this.apiUrl + } return `https://managed-ramp.${this.mainUrl}` } get exchangeUrl() { + if (this.env.GATEHUB_API_BASE_URL) { + return this.apiUrl + } return `https://exchange.${this.mainUrl}` } get onboardingUrl() { + if (this.env.GATEHUB_API_BASE_URL) { + return this.apiUrl + } return `https://onboarding.${this.mainUrl}` } diff --git a/packages/wallet/backend/src/gatehub/service.ts b/packages/wallet/backend/src/gatehub/service.ts index 976c51745..bf51357c4 100644 --- a/packages/wallet/backend/src/gatehub/service.ts +++ b/packages/wallet/backend/src/gatehub/service.ts @@ -260,6 +260,15 @@ export class GateHubService { } let customerId + // Check if customer already exists to prevent race condition between + // direct addUserToGateway call and webhook handler + if (user.customerId) { + this.logger.debug( + `Customer already exists for user ${userId}, skipping customer creation` + ) + return { isApproved, customerId: user.customerId } + } + if ( this.env.NODE_ENV === 'development' && this.env.GATEHUB_ENV === 'sandbox' @@ -325,6 +334,21 @@ export class GateHubService { firstName: string, lastName: string ): Promise { + // Check if customer setup already in progress or completed + // to prevent race condition between concurrent calls + const existingAccount = await Account.query().findOne({ + userId, + assetCode: 'EUR' + }) + + if (existingAccount) { + this.logger.warn( + `EUR account already exists for user ${userId}, skipping sandbox customer creation` + ) + const user = await User.query().findById(userId) + return user!.customerId || '' + } + const { account, walletAddress } = await this.createDefaultAccountAndWAForManagedUser(userId, true) diff --git a/packages/wallet/backend/src/middleware/withSession.ts b/packages/wallet/backend/src/middleware/withSession.ts index 5e1eaf946..fe97dca9d 100644 --- a/packages/wallet/backend/src/middleware/withSession.ts +++ b/packages/wallet/backend/src/middleware/withSession.ts @@ -6,10 +6,15 @@ import { getIronSession } from 'iron-session' -let domain = env.RAFIKI_MONEY_FRONTEND_HOST - +// Determine cookie domain. Avoid setting Domain=localhost, browsers ignore it. +let domain: string | undefined = undefined if (env.NODE_ENV === 'production' && env.GATEHUB_ENV === 'production') { domain = 'interledger.cards' +} else if ( + env.RAFIKI_MONEY_FRONTEND_HOST && + env.RAFIKI_MONEY_FRONTEND_HOST !== 'localhost' +) { + domain = env.RAFIKI_MONEY_FRONTEND_HOST } export const SESSION_OPTIONS: SessionOptions = { diff --git a/packages/wallet/frontend/Dockerfile.dev b/packages/wallet/frontend/Dockerfile.dev index 4a13dcab2..2e5f64a44 100644 --- a/packages/wallet/frontend/Dockerfile.dev +++ b/packages/wallet/frontend/Dockerfile.dev @@ -23,4 +23,20 @@ ADD . ./ # Install packages from virtual store RUN pnpm install -r --offline +# Accept build arguments for Next.js public environment variables +ARG NEXT_PUBLIC_BACKEND_URL +ARG NEXT_PUBLIC_AUTH_HOST +ARG NEXT_PUBLIC_OPEN_PAYMENTS_HOST +ARG NEXT_PUBLIC_GATEHUB_ENV +ARG NEXT_PUBLIC_THEME +ARG NEXT_PUBLIC_FEATURES_ENABLED + +# Make them available as environment variables during build +ENV NEXT_PUBLIC_BACKEND_URL=$NEXT_PUBLIC_BACKEND_URL +ENV NEXT_PUBLIC_AUTH_HOST=$NEXT_PUBLIC_AUTH_HOST +ENV NEXT_PUBLIC_OPEN_PAYMENTS_HOST=$NEXT_PUBLIC_OPEN_PAYMENTS_HOST +ENV NEXT_PUBLIC_GATEHUB_ENV=$NEXT_PUBLIC_GATEHUB_ENV +ENV NEXT_PUBLIC_THEME=$NEXT_PUBLIC_THEME +ENV NEXT_PUBLIC_FEATURES_ENABLED=$NEXT_PUBLIC_FEATURES_ENABLED + CMD ["pnpm", "wallet:frontend", "dev"] diff --git a/packages/wallet/frontend/next.config.js b/packages/wallet/frontend/next.config.js index 9e98bb8b9..0d43b0312 100644 --- a/packages/wallet/frontend/next.config.js +++ b/packages/wallet/frontend/next.config.js @@ -2,13 +2,18 @@ const withBundleAnalyzer = require('@next/bundle-analyzer')({ enabled: process.env.ANALYZE === 'true' }) -let NEXT_PUBLIC_FEATURES_ENABLED = 'true' +// Default to env override; fall back to previous production/sandbox rule, then to 'true' +let NEXT_PUBLIC_FEATURES_ENABLED = process.env.NEXT_PUBLIC_FEATURES_ENABLED -if ( - process.env.NODE_ENV === 'production' && - process.env.NEXT_PUBLIC_GATEHUB_ENV === 'sandbox' -) { - NEXT_PUBLIC_FEATURES_ENABLED = 'false' +if (!NEXT_PUBLIC_FEATURES_ENABLED) { + if ( + process.env.NODE_ENV === 'production' && + process.env.NEXT_PUBLIC_GATEHUB_ENV === 'sandbox' + ) { + NEXT_PUBLIC_FEATURES_ENABLED = 'false' + } else { + NEXT_PUBLIC_FEATURES_ENABLED = 'true' + } } /** @type {import('next').NextConfig} */ @@ -18,6 +23,8 @@ const nextConfig = { env: { NEXT_PUBLIC_BACKEND_URL: process.env.NEXT_PUBLIC_BACKEND_URL || 'http://localhost:3003', + // Internal URL for server-side (middleware) to reach backend in Docker + BACKEND_INTERNAL_URL: process.env.BACKEND_URL || 'http://wallet-backend:3003', NEXT_PUBLIC_OPEN_PAYMENTS_HOST: process.env.NEXT_PUBLIC_OPEN_PAYMENTS_HOST || '$rafiki-backend/', NEXT_PUBLIC_AUTH_HOST: diff --git a/packages/wallet/frontend/src/lib/httpClient.ts b/packages/wallet/frontend/src/lib/httpClient.ts index 8b2a1ad9d..957dde238 100644 --- a/packages/wallet/frontend/src/lib/httpClient.ts +++ b/packages/wallet/frontend/src/lib/httpClient.ts @@ -14,8 +14,14 @@ export type ErrorResponse = { errors?: T extends FieldValues ? Record, string> : undefined } +// Use internal backend URL when running on the server (SSR/middleware) +const isServer = typeof window === 'undefined' +const baseUrl = isServer + ? process.env.BACKEND_INTERNAL_URL || 'http://wallet-backend:3003' + : process.env.NEXT_PUBLIC_BACKEND_URL + export const httpClient = ky.extend({ - prefixUrl: process.env.NEXT_PUBLIC_BACKEND_URL, + prefixUrl: baseUrl, credentials: 'include', retry: 0, hooks: { diff --git a/packages/wallet/frontend/src/middleware.ts b/packages/wallet/frontend/src/middleware.ts index db8f681c0..1ed16a166 100644 --- a/packages/wallet/frontend/src/middleware.ts +++ b/packages/wallet/frontend/src/middleware.ts @@ -1,6 +1,7 @@ import { NextResponse } from 'next/server' import type { NextRequest } from 'next/server' -import { userService } from './lib/api/user' +// Do not use the browser httpClient here; middleware runs in the container. +// Call backend using the internal Docker hostname to validate the session. const isPublicPath = (path: string) => { return publicPaths.find((x) => @@ -15,9 +16,22 @@ export async function middleware(req: NextRequest) { const isPublic = isPublicPath(req.nextUrl.pathname) const cookieName = process.env.COOKIE_NAME || 'testnet.cookie' - const response = await userService.me( - `${cookieName}=${req.cookies.get(cookieName)?.value}` - ) + const cookieVal = req.cookies.get(cookieName)?.value + + // Build internal backend URL for middleware + const backendUrl = process.env.BACKEND_INTERNAL_URL || 'http://wallet-backend:3003' + let response: { success: boolean; result?: any; message?: string } = { + success: false + } + try { + const meRes = await fetch(`${backendUrl}/me`, { + headers: cookieVal ? { Cookie: `${cookieName}=${cookieVal}` } : {} + }) + const json = await meRes.json() + response = json + } catch (e) { + // Ignore connectivity errors; fallback logic below handles unauthenticated state + } // Success TRUE - the user is logged in if (response.success && response.result) { @@ -40,7 +54,8 @@ export async function middleware(req: NextRequest) { } if (isPublic) { - return NextResponse.redirect(new URL(callbackUrl ?? '/', req.url)) + const dest = callbackUrl ?? '/' + return NextResponse.redirect(new URL(dest, req.url)) } } else { // If the user is not logged in and tries to access a private resource, diff --git a/packages/wallet/frontend/src/utils/helpers.ts b/packages/wallet/frontend/src/utils/helpers.ts index fb8f20f2d..e3436f0da 100644 --- a/packages/wallet/frontend/src/utils/helpers.ts +++ b/packages/wallet/frontend/src/utils/helpers.ts @@ -44,8 +44,7 @@ export const formatAmount = (args: FormatAmountArgs): FormattedAmount => { const scaledValue = Number(`${value}e-${assetScale}`) const flooredValue = - Math.floor(Math.round(scaledValue * 10 ** displayScale)) / - 10 ** displayScale + Math.floor(scaledValue * 10 ** displayScale) / 10 ** displayScale const symbol = getCurrencySymbol(assetCode) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c44467fae..29b1f0f88 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -60,6 +60,24 @@ importers: specifier: ^5.9.3 version: 5.9.3 + e2e: + devDependencies: + '@playwright/test': + specifier: ^1.56.0 + version: 1.58.2 + '@types/node': + specifier: ^20.17.30 + version: 20.17.30 + dotenv: + specifier: ^17.2.3 + version: 17.3.1 + playwright-bdd: + specifier: ^8.0.0 + version: 8.5.0(@playwright/test@1.58.2) + typescript: + specifier: ^5.9.3 + version: 5.9.3 + packages/boutique/backend: dependencies: '@boutique/shared': @@ -453,7 +471,7 @@ importers: version: 1.11.0 next: specifier: 14.2.32 - version: 14.2.32(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.32(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-qrcode: specifier: ^2.5.1 version: 2.5.1(react@18.3.1) @@ -900,10 +918,51 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + '@colors/colors@1.6.0': resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} engines: {node: '>=0.1.90'} + '@cucumber/cucumber-expressions@18.0.1': + resolution: {integrity: sha512-NSid6bI+7UlgMywl5octojY5NXnxR9uq+JisjOrO52VbFsQM6gTWuQFE8syI10KnIBEdPzuEUSVEeZ0VFzRnZA==} + + '@cucumber/gherkin-utils@9.2.0': + resolution: {integrity: sha512-3nmRbG1bUAZP3fAaUBNmqWO0z0OSkykZZotfLjyhc8KWwDSOrOmMJlBTd474lpA8EWh4JFLAX3iXgynBqBvKzw==} + hasBin: true + + '@cucumber/gherkin@31.0.0': + resolution: {integrity: sha512-wlZfdPif7JpBWJdqvHk1Mkr21L5vl4EfxVUOS4JinWGf3FLRV6IKUekBv5bb5VX79fkDcfDvESzcQ8WQc07Wgw==} + + '@cucumber/gherkin@32.2.0': + resolution: {integrity: sha512-X8xuVhSIqlUjxSRifRJ7t0TycVWyX58fygJH3wDNmHINLg9sYEkvQT0SO2G5YlRZnYc11TIFr4YPenscvdlBIw==} + + '@cucumber/html-formatter@21.15.1': + resolution: {integrity: sha512-tjxEpP161sQ7xc3VREc94v1ymwIckR3ySViy7lTvfi1jUpyqy2Hd/p4oE3YT1kQ9fFDvUflPwu5ugK5mA7BQLA==} + peerDependencies: + '@cucumber/messages': '>=18' + + '@cucumber/junit-xml-formatter@0.7.1': + resolution: {integrity: sha512-AzhX+xFE/3zfoYeqkT7DNq68wAQfBcx4Dk9qS/ocXM2v5tBv6eFQ+w8zaSfsktCjYzu4oYRH/jh4USD1CYHfaQ==} + peerDependencies: + '@cucumber/messages': '*' + + '@cucumber/messages@26.0.1': + resolution: {integrity: sha512-DIxSg+ZGariumO+Lq6bn4kOUIUET83A4umrnWmidjGFl8XxkBieUZtsmNbLYgH/gnsmP07EfxxdTr0hOchV1Sg==} + + '@cucumber/messages@27.2.0': + resolution: {integrity: sha512-f2o/HqKHgsqzFLdq6fAhfG1FNOQPdBdyMGpKwhb7hZqg0yZtx9BVqkTyuoNk83Fcvk3wjMVfouFXXHNEk4nddA==} + + '@cucumber/query@13.6.0': + resolution: {integrity: sha512-tiDneuD5MoWsJ9VKPBmQok31mSX9Ybl+U4wqDoXeZgsXHDURqzM3rnpWVV3bC34y9W6vuFxrlwF/m7HdOxwqRw==} + peerDependencies: + '@cucumber/messages': '*' + + '@cucumber/tag-expressions@6.2.0': + resolution: {integrity: sha512-KIF0eLcafHbWOuSDWFw0lMmgJOLdDRWjEL1kfXEWrqHmx2119HxVAr35WuEd9z542d3Yyg+XNqSr+81rIKqEdg==} + '@dabh/diagnostics@2.0.8': resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==} @@ -1822,6 +1881,11 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + '@playwright/test@1.58.2': + resolution: {integrity: sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==} + engines: {node: '>=18'} + hasBin: true + '@polka/url@1.0.0-next.25': resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} @@ -2501,6 +2565,10 @@ packages: '@tanstack/virtual-core@3.13.9': resolution: {integrity: sha512-3jztt0jpaoJO5TARe2WIHC1UQC3VMLAFUW5mmMo0yrkwtDB2AQP0+sh10BVUpWrnvHjSLvzFizydtEGLCJKFoQ==} + '@teppeis/multimaps@3.0.0': + resolution: {integrity: sha512-ID7fosbc50TbT0MK0EG12O+gAP3W3Aa/Pz4DaTtQtEvlc9Odaqi0de+xuZ7Li2GtK4HzEX7IuRWS/JmZLksR3Q==} + engines: {node: '>=14'} + '@tootallnate/once@2.0.0': resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} @@ -3193,6 +3261,9 @@ packages: cjs-module-lexer@1.3.1: resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==} + class-transformer@0.5.1: + resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} + class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} @@ -3208,6 +3279,10 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + cli-truncate@2.1.0: resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} engines: {node: '>=8'} @@ -3292,6 +3367,10 @@ packages: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} + commander@13.1.0: + resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} + engines: {node: '>=18'} + commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -3612,6 +3691,10 @@ packages: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} + dotenv@17.3.1: + resolution: {integrity: sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==} + engines: {node: '>=12'} + drange@1.1.1: resolution: {integrity: sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==} engines: {node: '>=4'} @@ -4028,6 +4111,11 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -4921,6 +5009,10 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + luxon@3.7.2: + resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==} + engines: {node: '>=12'} + make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} @@ -4981,10 +5073,18 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} + mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} @@ -5424,6 +5524,23 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} + playwright-bdd@8.5.0: + resolution: {integrity: sha512-w/Bd5C1d6Xe5e1oREsbt2rDN0/Mcp+J2OjQwSl49/mroa2K6UZU33P7v91pLQPl1otDitMwJOaOeJsqaj7WU7w==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@playwright/test': '>=1.44' + + playwright-core@1.58.2: + resolution: {integrity: sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.58.2: + resolution: {integrity: sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==} + engines: {node: '>=18'} + hasBin: true + plimit-lit@1.6.1: resolution: {integrity: sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==} engines: {node: '>=12'} @@ -5808,6 +5925,9 @@ packages: resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} engines: {node: '>=4'} + reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + reflect.getprototypeof@1.0.9: resolution: {integrity: sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==} engines: {node: '>= 0.4'} @@ -5815,6 +5935,13 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + regexp-match-indices@1.0.2: + resolution: {integrity: sha512-DwZuAkt8NF5mKwGGER1EGh2PRqyvhRhhLviH+R8y8dIuaQROlUfXjt4s9ZTXstIsSkptf06BSvwcEmmfheJJWQ==} + + regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + regexp.prototype.flags@1.5.3: resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} engines: {node: '>= 0.4'} @@ -6090,6 +6217,9 @@ packages: source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map@0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} @@ -6595,6 +6725,10 @@ packages: resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} hasBin: true + uuid@11.0.5: + resolution: {integrity: sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==} + hasBin: true + uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -6773,6 +6907,10 @@ packages: utf-8-validate: optional: true + xmlbuilder@15.1.1: + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + engines: {node: '>=8.0'} + xmlhttprequest-ssl@2.1.1: resolution: {integrity: sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==} engines: {node: '>=0.4.0'} @@ -7274,8 +7412,65 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} + '@colors/colors@1.5.0': + optional: true + '@colors/colors@1.6.0': {} + '@cucumber/cucumber-expressions@18.0.1': + dependencies: + regexp-match-indices: 1.0.2 + + '@cucumber/gherkin-utils@9.2.0': + dependencies: + '@cucumber/gherkin': 31.0.0 + '@cucumber/messages': 27.2.0 + '@teppeis/multimaps': 3.0.0 + commander: 13.1.0 + source-map-support: 0.5.21 + + '@cucumber/gherkin@31.0.0': + dependencies: + '@cucumber/messages': 26.0.1 + + '@cucumber/gherkin@32.2.0': + dependencies: + '@cucumber/messages': 27.2.0 + + '@cucumber/html-formatter@21.15.1(@cucumber/messages@27.2.0)': + dependencies: + '@cucumber/messages': 27.2.0 + + '@cucumber/junit-xml-formatter@0.7.1(@cucumber/messages@27.2.0)': + dependencies: + '@cucumber/messages': 27.2.0 + '@cucumber/query': 13.6.0(@cucumber/messages@27.2.0) + '@teppeis/multimaps': 3.0.0 + luxon: 3.7.2 + xmlbuilder: 15.1.1 + + '@cucumber/messages@26.0.1': + dependencies: + '@types/uuid': 10.0.0 + class-transformer: 0.5.1 + reflect-metadata: 0.2.2 + uuid: 10.0.0 + + '@cucumber/messages@27.2.0': + dependencies: + '@types/uuid': 10.0.0 + class-transformer: 0.5.1 + reflect-metadata: 0.2.2 + uuid: 11.0.5 + + '@cucumber/query@13.6.0(@cucumber/messages@27.2.0)': + dependencies: + '@cucumber/messages': 27.2.0 + '@teppeis/multimaps': 3.0.0 + lodash.sortby: 4.7.0 + + '@cucumber/tag-expressions@6.2.0': {} + '@dabh/diagnostics@2.0.8': dependencies: '@so-ric/colorspace': 1.1.6 @@ -8453,6 +8648,10 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true + '@playwright/test@1.58.2': + dependencies: + playwright: 1.58.2 + '@polka/url@1.0.0-next.25': {} '@protobufjs/aspromise@1.1.2': {} @@ -9075,6 +9274,8 @@ snapshots: '@tanstack/virtual-core@3.13.9': {} + '@teppeis/multimaps@3.0.0': {} + '@tootallnate/once@2.0.0': {} '@types/babel__core@7.20.5': @@ -9955,6 +10156,8 @@ snapshots: cjs-module-lexer@1.3.1: {} + class-transformer@0.5.1: {} + class-variance-authority@0.7.1: dependencies: clsx: 2.1.1 @@ -9967,6 +10170,12 @@ snapshots: cli-spinners@2.9.2: {} + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + cli-truncate@2.1.0: dependencies: slice-ansi: 3.0.0 @@ -10037,6 +10246,8 @@ snapshots: commander@10.0.1: {} + commander@13.1.0: {} + commander@4.1.1: {} commander@7.2.0: {} @@ -10337,6 +10548,8 @@ snapshots: dotenv@16.4.5: {} + dotenv@17.3.1: {} + drange@1.1.1: {} dset@3.1.3: {} @@ -10912,6 +11125,9 @@ snapshots: fs.realpath@1.0.0: {} + fsevents@2.3.2: + optional: true + fsevents@2.3.3: optional: true @@ -12099,6 +12315,8 @@ snapshots: dependencies: yallist: 3.1.1 + luxon@3.7.2: {} + make-dir@4.0.0: dependencies: semver: 7.7.2 @@ -12141,10 +12359,16 @@ snapshots: mime-db@1.52.0: {} + mime-db@1.54.0: {} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 + mime-types@3.0.2: + dependencies: + mime-db: 1.54.0 + mime@1.6.0: {} mimic-fn@2.1.0: {} @@ -12218,7 +12442,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - next@14.2.32(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@14.2.32(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@next/env': 14.2.32 '@swc/helpers': 0.5.5 @@ -12240,6 +12464,7 @@ snapshots: '@next/swc-win32-ia32-msvc': 14.2.32 '@next/swc-win32-x64-msvc': 14.2.32 '@opentelemetry/api': 1.9.0 + '@playwright/test': 1.58.2 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -12588,6 +12813,30 @@ snapshots: dependencies: find-up: 4.1.0 + playwright-bdd@8.5.0(@playwright/test@1.58.2): + dependencies: + '@cucumber/cucumber-expressions': 18.0.1 + '@cucumber/gherkin': 32.2.0 + '@cucumber/gherkin-utils': 9.2.0 + '@cucumber/html-formatter': 21.15.1(@cucumber/messages@27.2.0) + '@cucumber/junit-xml-formatter': 0.7.1(@cucumber/messages@27.2.0) + '@cucumber/messages': 27.2.0 + '@cucumber/tag-expressions': 6.2.0 + '@playwright/test': 1.58.2 + cli-table3: 0.6.5 + commander: 13.1.0 + fast-glob: 3.3.3 + mime-types: 3.0.2 + xmlbuilder: 15.1.1 + + playwright-core@1.58.2: {} + + playwright@1.58.2: + dependencies: + playwright-core: 1.58.2 + optionalDependencies: + fsevents: 2.3.2 + plimit-lit@1.6.1: dependencies: queue-lit: 1.5.2 @@ -12944,6 +13193,8 @@ snapshots: dependencies: redis-errors: 1.2.0 + reflect-metadata@0.2.2: {} + reflect.getprototypeof@1.0.9: dependencies: call-bind: 1.0.8 @@ -12957,6 +13208,12 @@ snapshots: regenerator-runtime@0.14.1: {} + regexp-match-indices@1.0.2: + dependencies: + regexp-tree: 0.1.27 + + regexp-tree@0.1.27: {} + regexp.prototype.flags@1.5.3: dependencies: call-bind: 1.0.8 @@ -13332,6 +13589,11 @@ snapshots: buffer-from: 1.1.2 source-map: 0.6.1 + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + source-map@0.5.7: {} source-map@0.6.1: {} @@ -13882,6 +14144,8 @@ snapshots: uuid@10.0.0: {} + uuid@11.0.5: {} + uuid@8.3.2: {} uuid@9.0.1: {} @@ -14045,6 +14309,8 @@ snapshots: ws@8.18.0: {} + xmlbuilder@15.1.1: {} + xmlhttprequest-ssl@2.1.1: {} xtend@4.0.2: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index b5bd259eb..9097680e7 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,4 +1,5 @@ packages: + - 'e2e' - 'packages/wallet/*' - 'packages/boutique/*' - 'packages/shared/*' From 2a70da44b1d7424a05870268033f74f38aba6950 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Tue, 24 Mar 2026 14:07:42 +0200 Subject: [PATCH 02/51] fix: fixed linting issues --- .prettierignore | 3 +++ local/docker-compose.yml | 2 +- local/scripts/rafiki-setup.js | 18 +++++++++++++----- packages/wallet/frontend/next.config.js | 3 ++- packages/wallet/frontend/src/middleware.ts | 9 +++++++-- 5 files changed, 26 insertions(+), 9 deletions(-) diff --git a/.prettierignore b/.prettierignore index 0138993b0..f4e85359a 100644 --- a/.prettierignore +++ b/.prettierignore @@ -8,3 +8,6 @@ Dockerfile .gitignore .prettierignore coverage +e2e/.features-gen +e2e/playwright-report +e2e/test-results diff --git a/local/docker-compose.yml b/local/docker-compose.yml index 0745e0abe..813b71ba0 100644 --- a/local/docker-compose.yml +++ b/local/docker-compose.yml @@ -32,7 +32,7 @@ services: networks: - testnet healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/health"] + test: ['CMD', 'curl', '-f', 'http://localhost:8080/health'] interval: 10s timeout: 5s retries: 3 diff --git a/local/scripts/rafiki-setup.js b/local/scripts/rafiki-setup.js index 053ce48ca..50a0817f1 100644 --- a/local/scripts/rafiki-setup.js +++ b/local/scripts/rafiki-setup.js @@ -47,8 +47,7 @@ function canonicalizeAndStringify(value) { function buildEnv() { const envPath = path.join(__dirname, '.env') const fileEnv = loadDotEnv(envPath) - const get = (key, fallback) => - process.env[key] ?? fileEnv[key] ?? fallback + const get = (key, fallback) => process.env[key] ?? fileEnv[key] ?? fallback return { GRAPHQL_ENDPOINT: get('GRAPHQL_ENDPOINT', 'http://localhost:3011/graphql'), @@ -83,7 +82,11 @@ function signRequest({ query, variables, operationName }, env, timestamp) { async function graphqlRequest({ query, variables, operationName }, env) { const timestamp = Date.now() - const signature = signRequest({ query, variables, operationName }, env, timestamp) + const signature = signRequest( + { query, variables, operationName }, + env, + timestamp + ) const body = JSON.stringify({ query, variables, operationName }) const response = await fetch(env.GRAPHQL_ENDPOINT, { @@ -271,7 +274,10 @@ async function ensureAssets(env) { env ) } catch (err) { - console.log('Asset list failed, continuing to create assets...', err.message) + console.log( + 'Asset list failed, continuing to create assets...', + err.message + ) } const existingCodes = new Set( @@ -337,7 +343,9 @@ async function ensureLiquidity(env) { // Amount in minor units: 100000 * 10^scale const amount = BigInt(100000) * BigInt(10) ** BigInt(node.scale) - console.log(`Depositing liquidity for ${asset.code}: ${amount.toString()} (scale ${node.scale})`) + console.log( + `Depositing liquidity for ${asset.code}: ${amount.toString()} (scale ${node.scale})` + ) try { const res = await graphqlRequest( { diff --git a/packages/wallet/frontend/next.config.js b/packages/wallet/frontend/next.config.js index 0d43b0312..0068cb7ce 100644 --- a/packages/wallet/frontend/next.config.js +++ b/packages/wallet/frontend/next.config.js @@ -24,7 +24,8 @@ const nextConfig = { NEXT_PUBLIC_BACKEND_URL: process.env.NEXT_PUBLIC_BACKEND_URL || 'http://localhost:3003', // Internal URL for server-side (middleware) to reach backend in Docker - BACKEND_INTERNAL_URL: process.env.BACKEND_URL || 'http://wallet-backend:3003', + BACKEND_INTERNAL_URL: + process.env.BACKEND_URL || 'http://wallet-backend:3003', NEXT_PUBLIC_OPEN_PAYMENTS_HOST: process.env.NEXT_PUBLIC_OPEN_PAYMENTS_HOST || '$rafiki-backend/', NEXT_PUBLIC_AUTH_HOST: diff --git a/packages/wallet/frontend/src/middleware.ts b/packages/wallet/frontend/src/middleware.ts index 1ed16a166..657d49e2d 100644 --- a/packages/wallet/frontend/src/middleware.ts +++ b/packages/wallet/frontend/src/middleware.ts @@ -19,8 +19,13 @@ export async function middleware(req: NextRequest) { const cookieVal = req.cookies.get(cookieName)?.value // Build internal backend URL for middleware - const backendUrl = process.env.BACKEND_INTERNAL_URL || 'http://wallet-backend:3003' - let response: { success: boolean; result?: any; message?: string } = { + const backendUrl = + process.env.BACKEND_INTERNAL_URL || 'http://wallet-backend:3003' + let response: { + success: boolean + result?: Record + message?: string + } = { success: false } try { From 8a8379c9c6688f9b9fbe767a151f10ea20a09260 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Tue, 24 Mar 2026 16:53:23 +0200 Subject: [PATCH 03/51] fix: clean up --- .github/copilot-instructions.md | 11 ++++---- local/.env.example | 6 ++--- local/scripts/rafiki-setup.js | 14 +++++------ .../wallet/backend/src/gatehub/service.ts | 14 ++++++++++- packages/wallet/frontend/next.config.js | 4 ++- packages/wallet/frontend/src/middleware.ts | 25 ++++++++++++------- packages/wallet/frontend/src/utils/helpers.ts | 3 ++- 7 files changed, 49 insertions(+), 28 deletions(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 361a19b90..a03d96841 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -47,9 +47,8 @@ PATH=/home/$USER/.nvm/versions/node/v20.20.0/bin:$PATH corepack pnpm checks Validated behavior: may fail on existing repo formatting drift (Prettier). In this workspace it failed on: -- `.github/copilot-instructions.md` -- `docker/local/docker-compose.yml` -- `docker/local/rafiki-setup.js` +- `local/docker-compose.yml` +- `local/scripts/rafiki-setup.js` - `packages/wallet/frontend/next.config.js` - `packages/wallet/frontend/src/middleware.ts` @@ -109,10 +108,10 @@ No command timeouts were observed in this validation pass. Failing commands exit Required precondition before first `pnpm dev`: ```bash -cp docker/dev/.env.example docker/dev/.env +cp local/.env.example local/.env ``` -GateHub-related variables in `docker/dev/.env` are required for full KYC/funding flows. +GateHub-related variables in `local/.env` are required for full KYC/funding flows. Main run modes: @@ -137,7 +136,7 @@ High-signal root files: - `pnpm-workspace.yaml`: workspace package patterns. - `tsconfig.json`: top-level project references. - `eslint.config.mjs`, `.prettierrc.js`: repo-wide code quality rules. -- `docker/dev/docker-compose.yml`: full local dependency graph (Postgres, Redis, Rafiki, Kratos, app backends). +- `local/docker-compose.yml`: full local dependency graph (Postgres, Redis, Rafiki, Kratos, app backends). Key source areas: diff --git a/local/.env.example b/local/.env.example index f5f83619c..7f160e14e 100644 --- a/local/.env.example +++ b/local/.env.example @@ -60,7 +60,7 @@ GATEHUB_ENV=sandbox GATEHUB_IFRAME_BASE_URL=http://localhost:8080 GATEHUB_ACCESS_KEY=mock_access_key GATEHUB_SECRET_KEY=mock_secret_key -GATEHUB_WEBHOOK_SECRET=mock_webhook_secret_please_change +GATEHUB_WEBHOOK_SECRET=6d6f636b5f776562686f6f6b5f736563726574 GATEHUB_GATEWAY_UUID=mock-gateway-uuid GATEHUB_SETTLEMENT_WALLET_ADDRESS=$ilp.interledger-test.dev/interledger GATEHUB_ORG_ID=mock-org-id @@ -86,8 +86,8 @@ GATEHUB_CARD_APP_ID=mock-card-app-id # GATEHUB_CARD_APP_ID= # Wallet backend rate limits and product codes (optional) -RATE_LIMIT=100 -RATE_LIMIT_LEVEL=per_minute +RATE_LIMIT=false +RATE_LIMIT_LEVEL=LAX GATEHUB_ACCOUNT_PRODUCT_CODE=DEFAULT GATEHUB_CARD_PRODUCT_CODE=DEFAULT GATEHUB_NAME_ON_CARD=TEST USER diff --git a/local/scripts/rafiki-setup.js b/local/scripts/rafiki-setup.js index 50a0817f1..5aa532de1 100644 --- a/local/scripts/rafiki-setup.js +++ b/local/scripts/rafiki-setup.js @@ -1,12 +1,12 @@ #!/usr/bin/env node /** * Configure Rafiki (local docker stack) with a tenant + assets. - * - Reads values from docker/local/.env when present (process.env takes priority) + * - Reads values from .env in this directory (local/scripts/.env) when present (process.env takes priority) * - Creates the operator tenant (idpConsentUrl + idpSecret) * - Ensures assets exist for the Testnet wallet * - * Run after `docker compose up -d` from docker/local: - * node rafiki-setup.js + * Run after `docker compose up -d` from local/: + * node scripts/rafiki-setup.js */ const fs = require('fs') @@ -280,13 +280,13 @@ async function ensureAssets(env) { ) } - const existingCodes = new Set( - (current?.assets?.edges ?? []).map((e) => e.node.code) + const existingAssets = new Set( + (current?.assets?.edges ?? []).map((e) => `${e.node.code}:${e.node.scale}`) ) for (const asset of assetsToEnsure) { - if (existingCodes.has(asset.code)) { - console.log(`Asset ${asset.code} already exists`) + if (existingAssets.has(`${asset.code}:${asset.scale}`)) { + console.log(`Asset ${asset.code} (scale ${asset.scale}) already exists`) continue } console.log(`Creating asset ${asset.code}...`) diff --git a/packages/wallet/backend/src/gatehub/service.ts b/packages/wallet/backend/src/gatehub/service.ts index bf51357c4..761fa72f5 100644 --- a/packages/wallet/backend/src/gatehub/service.ts +++ b/packages/wallet/backend/src/gatehub/service.ts @@ -346,7 +346,19 @@ export class GateHubService { `EUR account already exists for user ${userId}, skipping sandbox customer creation` ) const user = await User.query().findById(userId) - return user!.customerId || '' + if (!user) { + this.logger.error( + `User ${userId} not found while EUR account exists, cannot retrieve customerId` + ) + throw new NotFound('User not found') + } + if (!user.customerId) { + this.logger.error( + `Missing customerId for user ${userId} with existing EUR account` + ) + throw new Error('CustomerId is missing for existing EUR account') + } + return user.customerId } const { account, walletAddress } = diff --git a/packages/wallet/frontend/next.config.js b/packages/wallet/frontend/next.config.js index 0068cb7ce..361eec487 100644 --- a/packages/wallet/frontend/next.config.js +++ b/packages/wallet/frontend/next.config.js @@ -25,7 +25,9 @@ const nextConfig = { process.env.NEXT_PUBLIC_BACKEND_URL || 'http://localhost:3003', // Internal URL for server-side (middleware) to reach backend in Docker BACKEND_INTERNAL_URL: - process.env.BACKEND_URL || 'http://wallet-backend:3003', + process.env.BACKEND_INTERNAL_URL || + process.env.BACKEND_URL || + 'http://wallet-backend:3003', NEXT_PUBLIC_OPEN_PAYMENTS_HOST: process.env.NEXT_PUBLIC_OPEN_PAYMENTS_HOST || '$rafiki-backend/', NEXT_PUBLIC_AUTH_HOST: diff --git a/packages/wallet/frontend/src/middleware.ts b/packages/wallet/frontend/src/middleware.ts index 657d49e2d..a1a59853c 100644 --- a/packages/wallet/frontend/src/middleware.ts +++ b/packages/wallet/frontend/src/middleware.ts @@ -28,14 +28,16 @@ export async function middleware(req: NextRequest) { } = { success: false } - try { - const meRes = await fetch(`${backendUrl}/me`, { - headers: cookieVal ? { Cookie: `${cookieName}=${cookieVal}` } : {} - }) - const json = await meRes.json() - response = json - } catch (e) { - // Ignore connectivity errors; fallback logic below handles unauthenticated state + if (cookieVal) { + try { + const meRes = await fetch(`${backendUrl}/me`, { + headers: { Cookie: `${cookieName}=${cookieVal}` } + }) + const json = await meRes.json() + response = json + } catch (e) { + // Ignore connectivity errors; fallback logic below handles unauthenticated state + } } // Success TRUE - the user is logged in @@ -59,7 +61,12 @@ export async function middleware(req: NextRequest) { } if (isPublic) { - const dest = callbackUrl ?? '/' + const dest = + callbackUrl && + callbackUrl.startsWith('/') && + !callbackUrl.startsWith('//') + ? callbackUrl + : '/' return NextResponse.redirect(new URL(dest, req.url)) } } else { diff --git a/packages/wallet/frontend/src/utils/helpers.ts b/packages/wallet/frontend/src/utils/helpers.ts index e3436f0da..deba0ce42 100644 --- a/packages/wallet/frontend/src/utils/helpers.ts +++ b/packages/wallet/frontend/src/utils/helpers.ts @@ -44,7 +44,8 @@ export const formatAmount = (args: FormatAmountArgs): FormattedAmount => { const scaledValue = Number(`${value}e-${assetScale}`) const flooredValue = - Math.floor(scaledValue * 10 ** displayScale) / 10 ** displayScale + Math.floor(Math.round(scaledValue * 10 ** (displayScale + 4)) / 10 ** 4) / + 10 ** displayScale const symbol = getCurrencySymbol(assetCode) From 01c97da72c8881a6406d372c8cb91cd3578199bb Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Tue, 24 Mar 2026 17:14:46 +0200 Subject: [PATCH 04/51] fix: repaired broken test related to emailService --- packages/wallet/backend/tests/auth/controller.test.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/wallet/backend/tests/auth/controller.test.ts b/packages/wallet/backend/tests/auth/controller.test.ts index 62be689c0..a9fcaef03 100644 --- a/packages/wallet/backend/tests/auth/controller.test.ts +++ b/packages/wallet/backend/tests/auth/controller.test.ts @@ -18,6 +18,7 @@ import { withSession } from '@/middleware/withSession' import { getRedisClient } from '@/config/redis' import { rateLimiterLogin, rateLimiterEmail } from '@/middleware/rateLimit' import type { UserService } from '@/user/service' +import type { EmailService } from '@/email/service' import { fakeLoginData, mockGateHubClient, @@ -37,6 +38,7 @@ describe('Authentication Controller', (): void => { let authService: AuthService let authController: AuthController let userService: UserService + let emailService: EmailService let req: MockRequest let res: MockResponse @@ -50,6 +52,7 @@ describe('Authentication Controller', (): void => { authService = await bindings.resolve('authService') authController = await bindings.resolve('authController') userService = await bindings.resolve('userService') + emailService = await bindings.resolve('emailService') Reflect.set( userService, @@ -77,6 +80,7 @@ describe('Authentication Controller', (): void => { describe('Sign Up', (): void => { it('should return status 201 if the user is created', async (): Promise => { req.body = mockSignUpRequest().body + jest.spyOn(emailService, 'verifyDomain').mockResolvedValueOnce(undefined) await authController.signUp(req, res, next) expect(next).toHaveBeenCalledTimes(0) @@ -107,6 +111,7 @@ describe('Authentication Controller', (): void => { it('should return status 500 on unexpected error', async (): Promise => { req.body = mockSignUpRequest().body + jest.spyOn(emailService, 'verifyDomain').mockResolvedValueOnce(undefined) const createSpy = jest .spyOn(userService, 'create') From 36c32a4d6b77c37b03f712e40688381c40d6cb14 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Wed, 25 Mar 2026 18:04:13 +0200 Subject: [PATCH 05/51] fix: removed the +4 precision guard we don't need --- packages/wallet/frontend/src/utils/helpers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/wallet/frontend/src/utils/helpers.ts b/packages/wallet/frontend/src/utils/helpers.ts index deba0ce42..7c256e575 100644 --- a/packages/wallet/frontend/src/utils/helpers.ts +++ b/packages/wallet/frontend/src/utils/helpers.ts @@ -44,7 +44,7 @@ export const formatAmount = (args: FormatAmountArgs): FormattedAmount => { const scaledValue = Number(`${value}e-${assetScale}`) const flooredValue = - Math.floor(Math.round(scaledValue * 10 ** (displayScale + 4)) / 10 ** 4) / + Math.floor(Math.round(scaledValue * 10 ** displayScale) / 10 ** 4) / 10 ** displayScale const symbol = getCurrencySymbol(assetCode) From 23a132f341941dc495828d82a33c503635f79fd6 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Thu, 26 Mar 2026 05:58:18 +0200 Subject: [PATCH 06/51] fix: address PR review feedback and fix Docker build --- local/scripts/rafiki-setup.js | 21 +++++++++++++----- package.json | 5 +---- packages/boutique/backend/Dockerfile.dev | 2 +- packages/wallet/backend/Dockerfile.dev | 2 +- packages/wallet/frontend/Dockerfile.dev | 2 +- packages/wallet/frontend/src/middleware.ts | 25 +++++++--------------- 6 files changed, 28 insertions(+), 29 deletions(-) diff --git a/local/scripts/rafiki-setup.js b/local/scripts/rafiki-setup.js index 5aa532de1..fe59caa78 100644 --- a/local/scripts/rafiki-setup.js +++ b/local/scripts/rafiki-setup.js @@ -16,22 +16,33 @@ const crypto = require('crypto') // ---- helpers --------------------------------------------------------------- function loadDotEnv(envPath) { const result = {} - if (!fs.existsSync(envPath)) return result + if (!fs.existsSync(envPath)) { + return result + } const lines = fs.readFileSync(envPath, 'utf8').split(/\r?\n/) for (const line of lines) { - if (!line || line.trim().startsWith('#')) continue + if (!line || line.trim().startsWith('#')) { + continue + } const idx = line.indexOf('=') - if (idx === -1) continue + if (idx === -1) { + continue + } const key = line.slice(0, idx).trim() const value = line.slice(idx + 1).trim() result[key] = value } + return result } function canonicalize(value) { - if (value === null || typeof value !== 'object') return value - if (Array.isArray(value)) return value.map(canonicalize) + if (value === null || typeof value !== 'object') { + return value + } + if (Array.isArray(value)) { + return value.map(canonicalize) + } const sortedKeys = Object.keys(value).sort() const obj = {} for (const key of sortedKeys) { diff --git a/package.json b/package.json index 3ab353a94..704e2a3ee 100644 --- a/package.json +++ b/package.json @@ -22,8 +22,7 @@ "format": "pnpm prettier:write && pnpm lint:fix", "lint:check": "eslint --max-warnings=0 .", "lint:fix": "eslint --max-warnings=0 --fix .", - "compose": "docker compose -f ./docker/dev/docker-compose.yml", - "compose:prod": "docker compose -f ./docker/prod/docker-compose.yml", + "compose": "docker compose -f ./local/docker-compose.yml", "localenv:start": "cross-env DEV_MODE=hot-reload pnpm compose up -d --build", "localenv:start:debug": "cross-env DEV_MODE=debug pnpm compose up -d --build", "localenv:start:lite": "cross-env DEV_MODE=lite pnpm compose up -d --build", @@ -31,8 +30,6 @@ "preinstall": "npx only-allow pnpm", "prettier:write": "prettier --config \".prettierrc.js\" --write .", "prettier:check": "prettier --config \".prettierrc.js\" --check .", - "prod": "pnpm compose:prod up -d --build", - "prod:down": "pnpm compose:prod down", "wallet:backend": "pnpm --filter @wallet/backend --", "wallet:frontend": "pnpm --filter @wallet/frontend --" }, diff --git a/packages/boutique/backend/Dockerfile.dev b/packages/boutique/backend/Dockerfile.dev index b55f45b98..3fe3ed21e 100644 --- a/packages/boutique/backend/Dockerfile.dev +++ b/packages/boutique/backend/Dockerfile.dev @@ -21,7 +21,7 @@ RUN pnpm fetch ADD . ./ # Install packages from virtual store -RUN pnpm install -r --offline +RUN pnpm install --filter @boutique/backend... --offline RUN pnpm boutique:backend build diff --git a/packages/wallet/backend/Dockerfile.dev b/packages/wallet/backend/Dockerfile.dev index 8c480a4f0..21540a3bb 100644 --- a/packages/wallet/backend/Dockerfile.dev +++ b/packages/wallet/backend/Dockerfile.dev @@ -21,7 +21,7 @@ RUN pnpm fetch ADD . ./ # Install packages from virtual store -RUN pnpm install -r --offline +RUN pnpm install --filter @wallet/backend... --offline # Build backend RUN pnpm wallet:backend build diff --git a/packages/wallet/frontend/Dockerfile.dev b/packages/wallet/frontend/Dockerfile.dev index 2e5f64a44..d6bbe8d22 100644 --- a/packages/wallet/frontend/Dockerfile.dev +++ b/packages/wallet/frontend/Dockerfile.dev @@ -21,7 +21,7 @@ RUN pnpm fetch ADD . ./ # Install packages from virtual store -RUN pnpm install -r --offline +RUN pnpm install --filter @wallet/frontend... --offline # Accept build arguments for Next.js public environment variables ARG NEXT_PUBLIC_BACKEND_URL diff --git a/packages/wallet/frontend/src/middleware.ts b/packages/wallet/frontend/src/middleware.ts index a1a59853c..c9a9c9b70 100644 --- a/packages/wallet/frontend/src/middleware.ts +++ b/packages/wallet/frontend/src/middleware.ts @@ -1,7 +1,8 @@ import { NextResponse } from 'next/server' import type { NextRequest } from 'next/server' -// Do not use the browser httpClient here; middleware runs in the container. -// Call backend using the internal Docker hostname to validate the session. +import { userService } from '@/lib/api/user' +import type { SuccessResponse, ErrorResponse } from '@/lib/httpClient' +import type { UserResponse } from '@wallet/shared' const isPublicPath = (path: string) => { return publicPaths.find((x) => @@ -18,24 +19,14 @@ export async function middleware(req: NextRequest) { const cookieVal = req.cookies.get(cookieName)?.value - // Build internal backend URL for middleware - const backendUrl = - process.env.BACKEND_INTERNAL_URL || 'http://wallet-backend:3003' - let response: { - success: boolean - result?: Record - message?: string - } = { - success: false + let response: SuccessResponse | ErrorResponse = { + success: false, + message: '' } if (cookieVal) { try { - const meRes = await fetch(`${backendUrl}/me`, { - headers: { Cookie: `${cookieName}=${cookieVal}` } - }) - const json = await meRes.json() - response = json - } catch (e) { + response = await userService.me(`${cookieName}=${cookieVal}`) + } catch { // Ignore connectivity errors; fallback logic below handles unauthenticated state } } From 64a49767b8b54444247da9583ea7fc4b204a2876 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Fri, 27 Mar 2026 05:39:31 +0200 Subject: [PATCH 07/51] fix: removed changes to formatAmount --- packages/wallet/frontend/src/utils/helpers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/wallet/frontend/src/utils/helpers.ts b/packages/wallet/frontend/src/utils/helpers.ts index 7c256e575..fb8f20f2d 100644 --- a/packages/wallet/frontend/src/utils/helpers.ts +++ b/packages/wallet/frontend/src/utils/helpers.ts @@ -44,7 +44,7 @@ export const formatAmount = (args: FormatAmountArgs): FormattedAmount => { const scaledValue = Number(`${value}e-${assetScale}`) const flooredValue = - Math.floor(Math.round(scaledValue * 10 ** displayScale) / 10 ** 4) / + Math.floor(Math.round(scaledValue * 10 ** displayScale)) / 10 ** displayScale const symbol = getCurrencySymbol(assetCode) From 7953b5997f5b70ecf34777964f010f85f59e6354 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Sun, 5 Apr 2026 18:24:40 +0200 Subject: [PATCH 08/51] refactor(local): breaking up into multiple service files --- local/.env.example | 10 +- local/Makefile | 71 ++++++++ local/config/certs/local.crt | 24 +++ local/config/certs/local.key | 28 +++ local/config/san.cnf | 26 +++ local/config/traefik/dynamic.yml | 6 + local/docker-compose.yml | 285 +------------------------------ local/mailslurper.yaml | 9 + local/mockgatehub.yaml | 30 ++++ local/postgres.yaml | 15 ++ local/rafiki.yaml | 149 ++++++++++++++++ local/redis.yaml | 11 ++ local/traefik.yaml | 25 +++ local/wallet.yaml | 113 ++++++++++++ 14 files changed, 522 insertions(+), 280 deletions(-) create mode 100644 local/Makefile create mode 100644 local/config/certs/local.crt create mode 100644 local/config/certs/local.key create mode 100644 local/config/san.cnf create mode 100644 local/config/traefik/dynamic.yml create mode 100644 local/mailslurper.yaml create mode 100644 local/mockgatehub.yaml create mode 100644 local/postgres.yaml create mode 100644 local/rafiki.yaml create mode 100644 local/redis.yaml create mode 100644 local/traefik.yaml create mode 100644 local/wallet.yaml diff --git a/local/.env.example b/local/.env.example index 7f160e14e..9d488b07f 100644 --- a/local/.env.example +++ b/local/.env.example @@ -55,6 +55,8 @@ SEND_EMAIL=false # --------------------------------------------------------------------------- # --- Mock defaults (active when the override block below is commented) ----- +# GATEHUB_API_BASE_URL is used by the backend for signed GateHub API calls. +# GATEHUB_IFRAME_BASE_URL is used for browser-facing iframe URLs returned to FE. GATEHUB_API_BASE_URL=http://mockgatehub:8080 GATEHUB_ENV=sandbox GATEHUB_IFRAME_BASE_URL=http://localhost:8080 @@ -70,10 +72,10 @@ GATEHUB_CARD_APP_ID=mock-card-app-id # To use the real sandbox, comment out the mock block above and uncomment the # lines below, filling in your credentials. # -# IMPORTANT: Leave GATEHUB_API_BASE_URL **unset** (or comment it out). -# When it is absent the wallet backend auto-constructs the correct sub-domain -# URLs (api.sandbox.gatehub.net, managed-ramp.sandbox.gatehub.net, etc.) -# based on GATEHUB_ENV. +# IMPORTANT: Leave GATEHUB_API_BASE_URL and GATEHUB_IFRAME_BASE_URL **unset** +# (or comment them out) unless you need custom hosts. When they are absent the +# wallet backend auto-constructs the correct GateHub sub-domain URLs based on +# GATEHUB_ENV. # # GATEHUB_ENV=sandbox # GATEHUB_IFRAME_BASE_URL=https://sandbox.gatehub.net diff --git a/local/Makefile b/local/Makefile new file mode 100644 index 000000000..78b2c28c4 --- /dev/null +++ b/local/Makefile @@ -0,0 +1,71 @@ +COMPOSE := docker compose + +help: + @echo "make " + @echo "e.g. make all" + @echo "" + @echo "help Show this help message" + @echo "all Start full local stack (with Traefik)" + @echo "all-nowatch Start full local stack in background" + @echo "down Stop the local stack" + @echo "hosts Add testnet host aliases to /etc/hosts (requires sudo)" + @echo "certs Generate self-signed TLS certificate for local domains" + @echo "trust Trust local TLS certificate (auto-detect OS)" + @echo "trust-macos Trust certificate on macOS" + @echo "trust-linux Trust certificate on Debian-based Linux" + @echo "" + +.PHONY: help all all-nowatch down hosts certs trust trust-macos trust-linux + +all: certs + $(COMPOSE) up + +all-nowatch: certs + $(COMPOSE) up -d + +down: + $(COMPOSE) down + +certs: + mkdir -p config/certs + @if [ "$(HEADLESS)" = "1" ]; then \ + openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ + -keyout config/certs/local.key -out config/certs/local.crt \ + -subj "/CN=testnet.test/O=Interledger/C=US" \ + -config config/san.cnf; \ + else \ + openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ + -keyout config/certs/local.key -out config/certs/local.crt \ + -config config/san.cnf; \ + fi + +trust: certs + @if [ "$(shell uname -s)" = "Darwin" ]; then \ + $(MAKE) trust-macos; \ + else \ + $(MAKE) trust-linux; \ + fi + +trust-macos: certs + sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain config/certs/local.crt + +trust-linux: certs + sudo cp config/certs/local.crt /usr/local/share/ca-certificates/interledger-testnet-local.crt + sudo update-ca-certificates + rm -rf $(HOME)/.pki/nssdb + mkdir -p $(HOME)/.pki/nssdb + certutil -d sql:$(HOME)/.pki/nssdb -N --empty-password + certutil -d sql:$(HOME)/.pki/nssdb -A -t "C,," -n "testnet.test" -i config/certs/local.crt + +HOSTS := testnet.test \ + api.testnet.test \ + auth.testnet.test \ + rafiki-auth.testnet.test \ + rafiki-backend.testnet.test \ + rafiki-frontend.testnet.test \ + rafiki-card-service.testnet.test \ + mockgatehub.testnet.test + +hosts: + @sudo sed -i.bak '/# generated by make hosts/d' /etc/hosts && sudo rm -f /etc/hosts.bak + @$(foreach host,$(HOSTS),echo "127.0.0.1 $(host) # generated by make hosts" | sudo tee -a /etc/hosts > /dev/null;) \ No newline at end of file diff --git a/local/config/certs/local.crt b/local/config/certs/local.crt new file mode 100644 index 000000000..194a9b10d --- /dev/null +++ b/local/config/certs/local.crt @@ -0,0 +1,24 @@ +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIUS43Vnhrq0UiMfbyae2RuNcth7YQwDQYJKoZIhvcNAQEL +BQAwOjEVMBMGA1UEAwwMdGVzdG5ldC50ZXN0MRQwEgYDVQQKDAtJbnRlcmxlZGdl +cjELMAkGA1UEBhMCVVMwHhcNMjYwNDAxMDgxNTAyWhcNMzYwMzI5MDgxNTAyWjA6 +MRUwEwYDVQQDDAx0ZXN0bmV0LnRlc3QxFDASBgNVBAoMC0ludGVybGVkZ2VyMQsw +CQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMIx9o8W +gwPRmVQyBy/xvtT5ahbNTCdHBFFFWxvSx85wTzkx6EZ2eYOiP58LsPTD24CSjSlz +QifVE6WlMb5HS8PK4Ni6i6hYmrIhtLL54peQPIo0WjABNODBNFgK64KFh3tkciL4 +r9FBBbUibAyFeAwfO+2a3Ubio88DOi+PBI4QSABPcin4viM7xSUg35LFUlYRND8S +xTKFp9Sm2A937Jgk23E7rcAZabNTo/QnPOFdfpNe8IXa8ru2HGrCsMSFNgz2D9T5 +9XrR9N/NjKpl6ba4/1U9rar4rRPffRKiDBBdSVfH1haZm9KMI3jYhFWzzTNWGm46 +iz1SgW47+uicHUkCAwEAAaOCAQYwggECMIHgBgNVHREEgdgwgdWCDHRlc3RuZXQu +dGVzdIIQYXBpLnRlc3RuZXQudGVzdIIRYXV0aC50ZXN0bmV0LnRlc3SCGHJhZmlr +aS1hdXRoLnRlc3RuZXQudGVzdIIbcmFmaWtpLWJhY2tlbmQudGVzdG5ldC50ZXN0 +ghxyYWZpa2ktZnJvbnRlbmQudGVzdG5ldC50ZXN0giByYWZpa2ktY2FyZC1zZXJ2 +aWNlLnRlc3RuZXQudGVzdIIYbW9ja2dhdGVodWIudGVzdG5ldC50ZXN0gglsb2Nh +bGhvc3SHBH8AAAEwHQYDVR0OBBYEFP5uOsnJBUtzK3DlECFIWCiPZbUUMA0GCSqG +SIb3DQEBCwUAA4IBAQBTPWsxL3Bh/IL4sCj55NgwwD4tCUcWoamDZ6f2ATgyp07s +fTxJYFjQTurPGAnSfecPc53qkzADnP0j1IULhC8fqf9BADc10uPtRdvZYRrX8VVr +eeOJ7QLGAD3+loGLO7cLHYeeJ8g1DEVsfL+zlFyYaB/yzHoKnglPUHUpKaMQMYQ1 +eyetyfWb38a3vyDvHejtgXol8HwqgA0qgoWjYQVQuCZZp0gBX5t+tJURlBY8vbRc +3tnoSkzVgRE9gZMMy6kNQhumEqbx3sv3jPNbbglBNEElWjYq4v6rB5Ash6e81PaP +N0kFQX1+LOgflmQ/WOJObQNrAITlXnta9HbcTMp4 +-----END CERTIFICATE----- diff --git a/local/config/certs/local.key b/local/config/certs/local.key new file mode 100644 index 000000000..1a3bbbc2a --- /dev/null +++ b/local/config/certs/local.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDCMfaPFoMD0ZlU +Mgcv8b7U+WoWzUwnRwRRRVsb0sfOcE85MehGdnmDoj+fC7D0w9uAko0pc0In1ROl +pTG+R0vDyuDYuouoWJqyIbSy+eKXkDyKNFowATTgwTRYCuuChYd7ZHIi+K/RQQW1 +ImwMhXgMHzvtmt1G4qPPAzovjwSOEEgAT3Ip+L4jO8UlIN+SxVJWETQ/EsUyhafU +ptgPd+yYJNtxO63AGWmzU6P0JzzhXX6TXvCF2vK7thxqwrDEhTYM9g/U+fV60fTf +zYyqZem2uP9VPa2q+K0T330SogwQXUlXx9YWmZvSjCN42IRVs80zVhpuOos9UoFu +O/ronB1JAgMBAAECggEAKBORk6QMs7wMzaBpdU6JmIBEkaIapjx0uqT6kXple8gX +wXD4Q5ptp2nTgWozQcAty5HzCevcakYCAPxfkKo8C5MR5ghRjBOFEV/9X7ZMOgUt +SURWnHOTSxL0T3spcU1HUYLAP1FdT20A1YneDJN6292SS43bPqbFMZKz7l6wjPSY +iqqJPtcz0QE/EDML1l7WCvjUyMVhzUhjororUfY1VD7TttRJ/xYd/vjbvugXWHab +PMXAgYCeYR2wmnuXkvKtzxrKYO3S0ivUlmtrHg5GvvoMH+GtB6Hm9va9ZuHGtEVG +QMw24/z0IJ1fN7jHyZElhJjAdRuoIgC1A8MDAFNs1QKBgQD6+qCUqSB/s//EDypt +FL7f5E/MjuqpAjbqQ0ghgICoHIucvT81G2bs+IJyOF+gqlifCuADLHad0CCfo43T +xQCKtCMJeVUwq+ZN9fsnpNDm7FZM0RzVdZE7zlabcK8lM8uAMZNBstu5hdrHP5Xv +9Ew0KqTWq8Yq1nK73zzvZdy0gwKBgQDGFIVlV39nG06NY9R9Z+K9vkO1mlk8cr2t +tD0nLVNiV6ukxNT9rjc+/DdCR+zRVccd+B0owlNua9G4qazdeuK1MY51c4IFmT9f +7dDGjGETkyhlvvDrt6rQhPe8OCNw2F4tp7OI+OWJKEQcjGQ5SvUZ60EifKpMMXtD +oObNg/N1QwKBgBNgrm1L8Zpqh2DX2uq5I1OeCRs+HZgW9652q2cKyOQx8AWWBv9O +sk+xkEDJYXjCLj15VXppQG9G1n383sJu/2+2IM5mc9FiNFHooA+bhhWOQcuEiblh +bmkzsTQnKx6wNRIcwcXczWIxl4ayvhzcu9V7RWbdtFsyW4Ft5wKE1tmJAoGATbKA +/NaMf/pDHsz47dQRKdJ3JsYLmN19L6TSlAqAecPf7TrUPUnYG9m9Jz+lUhuuhj/r +2DAZn+elFSVhTGNGiEKPGd0cNGv/Yvaa/TbVYWNI5lg2ko+x7icqMednZ31Hu+rb +TrArAVkNFpGvQpX3fJo+K3PxLP//1PBJeHX4ypcCgYA3ejka+z0oTwz79Behxq98 +uFzivPTIAgwU2EnTV+OUNi8UHrLCY6dmEKlKzftyex35sdrv5jxgqARxcB8zDXxs +NoRlvuo8gRRqiAs+jKbyPWRmXxBl4J2inMbCXnEBWptZ7GgEbmqGF5GbWtj/vCxx +Xx+fGIHOcMO49HgDiq3pTQ== +-----END PRIVATE KEY----- diff --git a/local/config/san.cnf b/local/config/san.cnf new file mode 100644 index 000000000..a41ae05b0 --- /dev/null +++ b/local/config/san.cnf @@ -0,0 +1,26 @@ +[req] +default_bits = 2048 +prompt = no +default_md = sha256 +x509_extensions = v3_req +distinguished_name = dn + +[dn] +CN = testnet.test +O = Interledger +C = US + +[v3_req] +subjectAltName = @alt_names + +[alt_names] +DNS.1 = testnet.test +DNS.2 = api.testnet.test +DNS.3 = auth.testnet.test +DNS.4 = rafiki-auth.testnet.test +DNS.5 = rafiki-backend.testnet.test +DNS.6 = rafiki-frontend.testnet.test +DNS.7 = rafiki-card-service.testnet.test +DNS.8 = mockgatehub.testnet.test +DNS.9 = localhost +IP.1 = 127.0.0.1 \ No newline at end of file diff --git a/local/config/traefik/dynamic.yml b/local/config/traefik/dynamic.yml new file mode 100644 index 000000000..2dfb690af --- /dev/null +++ b/local/config/traefik/dynamic.yml @@ -0,0 +1,6 @@ +tls: + stores: + default: + defaultCertificate: + certFile: /certs/local.crt + keyFile: /certs/local.key diff --git a/local/docker-compose.yml b/local/docker-compose.yml index 813b71ba0..5fcac4608 100644 --- a/local/docker-compose.yml +++ b/local/docker-compose.yml @@ -1,279 +1,11 @@ -services: - postgres: - container_name: postgres-local - image: 'postgres:15' - environment: - POSTGRES_USER: ${POSTGRES_USER:-postgres} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-password} - ports: - - '15434:5432' - restart: unless-stopped - networks: - - testnet - volumes: - - pg-data:/var/lib/postgresql/data - - ./init/dbinit.sql:/docker-entrypoint-initdb.d/init.sql - - # MockGatehub - Mock Gatehub API service for local development - mockgatehub: - container_name: mockgatehub-local - image: ghcr.io/interledger/mockgatehub:1.12.3 - ports: - - '8080:8080' - environment: - MOCKGATEHUB_REDIS_URL: ${MOCKGATEHUB_REDIS_URL:-redis://redis:6379/1} - MOCKGATEHUB_REDIS_DB: ${MOCKGATEHUB_REDIS_DB:-1} - MOCKGATEHUB_VALID_CREDENTIALS: ${GATEHUB_ACCESS_KEY:-local-test-app-id}:${GATEHUB_SECRET_KEY:-local-test-app-secret} - WEBHOOK_URL: ${MOCKGATEHUB_WEBHOOK_URL:-http://wallet-backend:3003/gatehub-webhooks} - WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET:-6d6f636b5f776562686f6f6b5f736563726574} - depends_on: - - redis - restart: always - networks: - - testnet - healthcheck: - test: ['CMD', 'curl', '-f', 'http://localhost:8080/health'] - interval: 10s - timeout: 5s - retries: 3 - - # Wallet - wallet-backend: - container_name: wallet-backend-local - build: - context: ../ - args: - DEV_MODE: ${DEV_MODE:-true} - dockerfile: ./packages/wallet/backend/Dockerfile.dev - depends_on: - - postgres - - rafiki-backend - - redis - - mockgatehub - volumes: - - ../packages/wallet/backend:/home/testnet/packages/wallet/backend - - ../packages/wallet/shared:/home/testnet/packages/wallet/shared - environment: - NODE_ENV: ${NODE_ENV:-development} - PORT: ${WALLET_BACKEND_PORT:-3003} - DEBUG_PORT: ${WALLET_BACKEND_DEBUG_PORT:-9229} - DATABASE_URL: ${WALLET_BACKEND_DATABASE_URL:-postgres://wallet_backend:wallet_backend@postgres-local/wallet_backend} - COOKIE_NAME: ${WALLET_BACKEND_COOKIE_NAME:-testnet.cookie} - COOKIE_PASSWORD: ${WALLET_BACKEND_COOKIE_PASSWORD:-testnet.cookie.password.super.secret.ilp} - COOKIE_TTL: ${WALLET_BACKEND_COOKIE_TTL:-2630000} - OPEN_PAYMENTS_HOST: ${WALLET_BACKEND_OPEN_PAYMENTS_HOST:-https://rafiki-backend} - GRAPHQL_ENDPOINT: ${WALLET_BACKEND_GRAPHQL_ENDPOINT:-http://rafiki-backend:3001/graphql} - AUTH_GRAPHQL_ENDPOINT: ${WALLET_BACKEND_AUTH_GRAPHQL_ENDPOINT:-http://rafiki-auth:3008/graphql} - AUTH_DOMAIN: ${WALLET_BACKEND_AUTH_DOMAIN:-http://rafiki-auth:3006} - AUTH_IDENTITY_SERVER_SECRET: ${AUTH_IDENTITY_SERVER_SECRET:-auth-secret-key-12345} - RAFIKI_WEBHOOK_SIGNATURE_SECRET: ${RAFIKI_SIGNATURE_SECRET:-327132b5-99e9-4eb8-8a25-2b7d7738ece1} - SENDGRID_API_KEY: ${SENDGRID_API_KEY:-} - FROM_EMAIL: ${FROM_EMAIL:-noreply@testnet.local} - SEND_EMAIL: ${SEND_EMAIL:-false} - REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} - GATEHUB_API_BASE_URL: ${GATEHUB_API_BASE_URL:-http://mockgatehub:8080} - GATEHUB_ENV: ${GATEHUB_ENV:-sandbox} - GATEHUB_IFRAME_BASE_URL: ${GATEHUB_IFRAME_BASE_URL:-http://localhost:8080} - GATEHUB_ACCESS_KEY: ${GATEHUB_ACCESS_KEY:-local-test-app-id} - GATEHUB_SECRET_KEY: ${GATEHUB_SECRET_KEY:-local-test-app-secret} - GATEHUB_WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET:-6d6f636b5f776562686f6f6b5f736563726574} - GATEHUB_GATEWAY_UUID: ${GATEHUB_GATEWAY_UUID:-mock_gateway_uuid} - GATEHUB_SETTLEMENT_WALLET_ADDRESS: ${GATEHUB_SETTLEMENT_WALLET_ADDRESS:-rMockSettlementAddress} - GATEHUB_ORG_ID: ${GATEHUB_ORG_ID:-mock_org_id} - GATEHUB_CARD_APP_ID: ${GATEHUB_CARD_APP_ID:-mock_card_app_id} - RATE_LIMIT: ${RATE_LIMIT:-false} - RATE_LIMIT_LEVEL: ${RATE_LIMIT_LEVEL:-LAX} - GATEHUB_ACCOUNT_PRODUCT_CODE: ${GATEHUB_ACCOUNT_PRODUCT_CODE:-account_product} - GATEHUB_CARD_PRODUCT_CODE: ${GATEHUB_CARD_PRODUCT_CODE:-card_product} - GATEHUB_NAME_ON_CARD: ${GATEHUB_NAME_ON_CARD:-TestnetUser} - GATEHUB_CARD_PP_PREFIX: ${GATEHUB_CARD_PP_PREFIX:-TEST} - CARD_DATA_HREF: ${CARD_DATA_HREF:-https://card.example.com/data} - CARD_PIN_HREF: ${CARD_PIN_HREF:-https://card.example.com/pin} - STRIPE_SECRET_KEY: ${STRIPE_SECRET_KEY:-notset} - STRIPE_WEBHOOK_SECRET: ${STRIPE_WEBHOOK_SECRET:-notset} - USE_STRIPE: ${USE_STRIPE:-false} - OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} - ADMIN_API_SECRET: ${ADMIN_API_SECRET:-secret-key} - ADMIN_SIGNATURE_VERSION: ${ADMIN_SIGNATURE_VERSION:-1} - WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET:-6d6f636b5f776562686f6f6b5f736563726574} - restart: always - networks: - - testnet - ports: - - '3003:3003' - - '9229:9229' # Map debugger port to local machine's port 9229 - - wallet-frontend: - container_name: wallet-frontend-local - build: - context: .. - args: - DEV_MODE: ${DEV_MODE:-true} - NEXT_PUBLIC_BACKEND_URL: ${NEXT_PUBLIC_BACKEND_URL:-http://localhost:3003} - NEXT_PUBLIC_AUTH_HOST: ${NEXT_PUBLIC_AUTH_HOST:-http://localhost:3006} - NEXT_PUBLIC_OPEN_PAYMENTS_HOST: ${NEXT_PUBLIC_OPEN_PAYMENTS_HOST:-http://localhost:3010} - NEXT_PUBLIC_GATEHUB_ENV: ${NEXT_PUBLIC_GATEHUB_ENV:-sandbox} - NEXT_PUBLIC_THEME: ${NEXT_PUBLIC_THEME:-light} - NEXT_PUBLIC_FEATURES_ENABLED: ${NEXT_PUBLIC_FEATURES_ENABLED:-false} - dockerfile: ./packages/wallet/frontend/Dockerfile.dev - depends_on: - - wallet-backend - volumes: - - ../packages/wallet/frontend:/home/testnet/packages/wallet/frontend - - ../packages/wallet/shared:/home/testnet/packages/wallet/shared - environment: - NODE_ENV: ${NODE_ENV:-development} - BACKEND_URL: ${WALLET_FRONTEND_BACKEND_URL:-http://wallet-backend:3003} - NEXT_PUBLIC_BACKEND_URL: ${NEXT_PUBLIC_BACKEND_URL:-http://localhost:3003} - NEXT_PUBLIC_AUTH_HOST: ${NEXT_PUBLIC_AUTH_HOST:-http://localhost:3006} - NEXT_PUBLIC_OPEN_PAYMENTS_HOST: ${NEXT_PUBLIC_OPEN_PAYMENTS_HOST:-http://localhost:3010} - NEXT_PUBLIC_GATEHUB_ENV: ${NEXT_PUBLIC_GATEHUB_ENV:-sandbox} - NEXT_PUBLIC_THEME: ${NEXT_PUBLIC_THEME:-light} - NEXT_PUBLIC_FEATURES_ENABLED: ${NEXT_PUBLIC_FEATURES_ENABLED:-false} - restart: always - networks: - - testnet - ports: - - '4003:4003' - - # Rafiki - rafiki-auth: - container_name: rafiki-auth-local - image: ghcr.io/interledger/rafiki-auth:v2.2.0-beta - restart: always - networks: - - testnet - ports: - - '3006:3006' - - '3008:3008' - environment: - AUTH_PORT: ${RAFIKI_AUTH_PORT:-3006} - INTROSPECTION_PORT: ${RAFIKI_AUTH_INTROSPECTION_PORT:-3007} - ADMIN_PORT: ${RAFIKI_AUTH_ADMIN_PORT:-3008} - NODE_ENV: ${NODE_ENV:-development} - AUTH_SERVER_URL: ${RAFIKI_AUTH_SERVER_URL:-http://rafiki-auth:3006} - AUTH_DATABASE_URL: ${RAFIKI_AUTH_DATABASE_URL:-postgresql://rafiki_auth:rafiki_auth@postgres-local/rafiki_auth} - IDENTITY_SERVER_URL: ${RAFIKI_AUTH_IDENTITY_SERVER_URL:-http://wallet-frontend:4003/grant-interactions} - IDENTITY_SERVER_SECRET: ${AUTH_IDENTITY_SERVER_SECRET:-auth-secret-key-12345} - COOKIE_KEY: ${AUTH_COOKIE_KEY:-8fd398393c47dd27a3167d9c081c094f} - INTERACTION_COOKIE_SAME_SITE: ${AUTH_INTERACTION_COOKIE_SAME_SITE:-lax} - WAIT_SECONDS: ${RAFIKI_AUTH_WAIT_SECONDS:-1} - REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} - OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} - ADMIN_API_SECRET: ${ADMIN_API_SECRET:-secret-key} - ADMIN_SIGNATURE_VERSION: ${ADMIN_SIGNATURE_VERSION:-1} - depends_on: - - postgres - - rafiki-backend: - container_name: rafiki-backend-local - image: ghcr.io/interledger/rafiki-backend:v2.2.0-beta - restart: always - privileged: true - volumes: - - ../temp/:/workspace/temp/ - ports: - - '3010:80' - - '3011:3001' - - '3005:3005' - - '3002:3002' - networks: - - testnet - environment: - NODE_ENV: ${NODE_ENV:-development} - LOG_LEVEL: ${LOG_LEVEL:-debug} - ADMIN_PORT: ${RAFIKI_BACKEND_ADMIN_PORT:-3001} - CONNECTOR_PORT: ${RAFIKI_BACKEND_CONNECTOR_PORT:-3002} - OPEN_PAYMENTS_PORT: ${RAFIKI_BACKEND_OPEN_PAYMENTS_PORT:-80} - DATABASE_URL: ${RAFIKI_BACKEND_DATABASE_URL:-postgresql://rafiki_backend:rafiki_backend@postgres-local/rafiki_backend} - USE_TIGERBEETLE: ${RAFIKI_BACKEND_USE_TIGERBEETLE:-false} - NONCE_REDIS_KEY: ${RAFIKI_BACKEND_NONCE_REDIS_KEY:-test} - AUTH_SERVER_GRANT_URL: ${RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL:-http://rafiki-auth:3006} - AUTH_SERVER_INTROSPECTION_URL: ${RAFIKI_BACKEND_AUTH_SERVER_INTROSPECTION_URL:-http://rafiki-auth:3007} - ILP_ADDRESS: ${RAFIKI_BACKEND_ILP_ADDRESS:-test.net} - ILP_CONNECTOR_URL: ${RAFIKI_BACKEND_ILP_CONNECTOR_URL:-http://127.0.0.1:3002} - STREAM_SECRET: ${RAFIKI_BACKEND_STREAM_SECRET:-BjPXtnd00G2mRQwP/8ZpwyZASOch5sUXT5o0iR5b5wU=} - ADMIN_KEY: ${RAFIKI_BACKEND_ADMIN_KEY:-admin} - OPEN_PAYMENTS_URL: ${RAFIKI_BACKEND_OPEN_PAYMENTS_URL:-https://rafiki-backend} - REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} - WALLET_ADDRESS_URL: ${RAFIKI_BACKEND_WALLET_ADDRESS_URL:-https://rafiki-backend/.well-known/pay} - WEBHOOK_URL: ${RAFIKI_BACKEND_WEBHOOK_URL:-http://wallet-backend:3003/webhooks} - WEBHOOK_TIMEOUT: ${RAFIKI_BACKEND_WEBHOOK_TIMEOUT:-60000} - SIGNATURE_SECRET: ${RAFIKI_SIGNATURE_SECRET:-327132b5-99e9-4eb8-8a25-2b7d7738ece1} - EXCHANGE_RATES_URL: ${RAFIKI_BACKEND_EXCHANGE_RATES_URL:-http://wallet-backend:3003/rates} - ENABLE_AUTO_PEERING: ${RAFIKI_BACKEND_ENABLE_AUTO_PEERING:-true} - AUTO_PEERING_SERVER_PORT: ${RAFIKI_BACKEND_AUTO_PEERING_SERVER_PORT:-3005} - INSTANCE_NAME: ${RAFIKI_BACKEND_INSTANCE_NAME:-Testnet Wallet} - SLIPPAGE: ${RAFIKI_BACKEND_SLIPPAGE:-0.01} - KEY_ID: ${RAFIKI_BACKEND_KEY_ID:-rafiki} - WALLET_ADDRESS_REDIRECT_HTML_PAGE: ${RAFIKI_BACKEND_WALLET_ADDRESS_REDIRECT_HTML_PAGE:-http://localhost:4003/account?walletAddress=%ewa} - OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} - ADMIN_API_SECRET: ${ADMIN_API_SECRET:-secret-key} - ADMIN_SIGNATURE_VERSION: ${ADMIN_SIGNATURE_VERSION:-1} - AUTH_SERVICE_API_URL: ${RAFIKI_BACKEND_AUTH_SERVICE_API_URL:-http://rafiki-auth:3011} - CARD_SERVICE_URL: ${RAFIKI_BACKEND_CARD_SERVICE_URL:-http://rafiki-card-service:3007} - CARD_WEBHOOK_SERVICE_URL: ${RAFIKI_BACKEND_CARD_WEBHOOK_SERVICE_URL:-http://rafiki-card-service:3007/webhook} - POS_SERVICE_URL: ${RAFIKI_BACKEND_POS_SERVICE_URL:-http://rafiki-pos-service:3014} - POS_WEBHOOK_SERVICE_URL: ${RAFIKI_BACKEND_POS_WEBHOOK_SERVICE_URL:-http://rafiki-pos-service:3014/webhook} - depends_on: - - postgres - - redis - - rafiki-frontend: - container_name: rafiki-frontend-local - image: ghcr.io/interledger/rafiki-frontend:v2.2.0-beta - depends_on: - - rafiki-backend - restart: always - privileged: true - ports: - - '3012:3012' - networks: - - testnet - environment: - PORT: ${RAFIKI_FRONTEND_PORT:-3012} - GRAPHQL_URL: ${GRAPHQL_URL:-http://rafiki-backend:3001/graphql} - OPEN_PAYMENTS_URL: ${RAFIKI_FRONTEND_OPEN_PAYMENTS_URL:-https://rafiki-backend/} - ENABLE_INSECURE_MESSAGE_COOKIE: ${RAFIKI_FRONTEND_ENABLE_INSECURE_MESSAGE_COOKIE:-true} - AUTH_ENABLED: ${RAFIKI_FRONTEND_AUTH_ENABLED:-false} - SIGNATURE_VERSION: ${RAFIKI_FRONTEND_SIGNATURE_VERSION:-1} - - rafiki-card-service: - container_name: rafiki-card-service-local - image: ghcr.io/interledger/rafiki-card-service:v2.2.0-beta - restart: always - privileged: true - networks: - - testnet - ports: - - '3007:3007' - environment: - NODE_ENV: ${NODE_ENV:-development} - LOG_LEVEL: ${LOG_LEVEL:-debug} - CARD_SERVICE_PORT: ${RAFIKI_CARD_SERVICE_PORT:-3007} - REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} - GRAPHQL_URL: ${GRAPHQL_URL:-http://rafiki-backend:3001/graphql} - TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} - TENANT_SECRET: ${ADMIN_API_SECRET:-secret-key} - TENANT_SIGNATURE_VERSION: ${RAFIKI_CARD_SERVICE_TENANT_SIGNATURE_VERSION:-1} - - redis: - container_name: redis - image: 'redis:7-alpine' - restart: unless-stopped - networks: - - testnet - ports: - - '6379:6379' - - mailslurper: - container_name: mailslurper-local - image: oryd/mailslurper:latest-smtps - ports: - - '4436:4436' - - '4437:4437' - networks: - - testnet +include: + - traefik.yaml + - postgres.yaml + - redis.yaml + - mockgatehub.yaml + - rafiki.yaml + - wallet.yaml + - mailslurper.yaml networks: testnet: @@ -285,3 +17,4 @@ networks: volumes: pg-data: + redis-data: diff --git a/local/mailslurper.yaml b/local/mailslurper.yaml new file mode 100644 index 000000000..f95a0b1eb --- /dev/null +++ b/local/mailslurper.yaml @@ -0,0 +1,9 @@ +services: + mailslurper: + container_name: mailslurper-local + image: oryd/mailslurper:latest-smtps + ports: + - '4436:4436' + - '4437:4437' + networks: + - testnet diff --git a/local/mockgatehub.yaml b/local/mockgatehub.yaml new file mode 100644 index 000000000..a178b3b5d --- /dev/null +++ b/local/mockgatehub.yaml @@ -0,0 +1,30 @@ +services: + # MockGatehub - Mock Gatehub API service for local development + mockgatehub: + container_name: mockgatehub-local + image: ghcr.io/interledger/mockgatehub:1.12.3 + ports: + - '8080:8080' + environment: + MOCKGATEHUB_REDIS_URL: ${MOCKGATEHUB_REDIS_URL:-redis://redis:6379/1} + MOCKGATEHUB_REDIS_DB: ${MOCKGATEHUB_REDIS_DB:-1} + MOCKGATEHUB_VALID_CREDENTIALS: ${GATEHUB_ACCESS_KEY:-local-test-app-id}:${GATEHUB_SECRET_KEY:-local-test-app-secret} + WEBHOOK_URL: ${MOCKGATEHUB_WEBHOOK_URL:-http://wallet-backend:3003/gatehub-webhooks} + WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET:-6d6f636b5f776562686f6f6b5f736563726574} + depends_on: + - redis + restart: always + networks: + - testnet + healthcheck: + test: ['CMD', 'curl', '-f', 'http://localhost:8080/health'] + interval: 10s + timeout: 5s + retries: 3 + labels: + - traefik.enable=true + - traefik.docker.network=testnet + - traefik.http.routers.mockgatehub.rule=Host(`mockgatehub.testnet.test`) + - traefik.http.routers.mockgatehub.entrypoints=websecure + - traefik.http.routers.mockgatehub.tls=true + - traefik.http.services.mockgatehub.loadbalancer.server.port=8080 diff --git a/local/postgres.yaml b/local/postgres.yaml new file mode 100644 index 000000000..a515ad1ff --- /dev/null +++ b/local/postgres.yaml @@ -0,0 +1,15 @@ +services: + postgres: + container_name: postgres-local + image: 'postgres:15' + environment: + POSTGRES_USER: ${POSTGRES_USER:-postgres} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-password} + ports: + - '15434:5432' + restart: unless-stopped + networks: + - testnet + volumes: + - pg-data:/var/lib/postgresql/data + - ./init/dbinit.sql:/docker-entrypoint-initdb.d/init.sql diff --git a/local/rafiki.yaml b/local/rafiki.yaml new file mode 100644 index 000000000..55615eedf --- /dev/null +++ b/local/rafiki.yaml @@ -0,0 +1,149 @@ +services: + # Rafiki + rafiki-auth: + container_name: rafiki-auth-local + image: ghcr.io/interledger/rafiki-auth:v2.2.0-beta + restart: always + networks: + - testnet + ports: + - '3006:3006' + - '3008:3008' + environment: + AUTH_PORT: ${RAFIKI_AUTH_PORT:-3006} + INTROSPECTION_PORT: ${RAFIKI_AUTH_INTROSPECTION_PORT:-3007} + ADMIN_PORT: ${RAFIKI_AUTH_ADMIN_PORT:-3008} + NODE_ENV: ${NODE_ENV:-development} + AUTH_SERVER_URL: ${RAFIKI_AUTH_SERVER_URL:-http://rafiki-auth:3006} + AUTH_DATABASE_URL: ${RAFIKI_AUTH_DATABASE_URL:-postgresql://rafiki_auth:rafiki_auth@postgres-local/rafiki_auth} + IDENTITY_SERVER_URL: ${RAFIKI_AUTH_IDENTITY_SERVER_URL:-http://wallet-frontend:4003/grant-interactions} + IDENTITY_SERVER_SECRET: ${AUTH_IDENTITY_SERVER_SECRET:-auth-secret-key-12345} + COOKIE_KEY: ${AUTH_COOKIE_KEY:-8fd398393c47dd27a3167d9c081c094f} + INTERACTION_COOKIE_SAME_SITE: ${AUTH_INTERACTION_COOKIE_SAME_SITE:-lax} + WAIT_SECONDS: ${RAFIKI_AUTH_WAIT_SECONDS:-1} + REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} + OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} + ADMIN_API_SECRET: ${ADMIN_API_SECRET:-secret-key} + ADMIN_SIGNATURE_VERSION: ${ADMIN_SIGNATURE_VERSION:-1} + depends_on: + - postgres + labels: + - traefik.enable=true + - traefik.docker.network=testnet + - traefik.http.routers.rafiki-auth.rule=Host(`auth.testnet.test`) || Host(`rafiki-auth.testnet.test`) + - traefik.http.routers.rafiki-auth.entrypoints=websecure + - traefik.http.routers.rafiki-auth.tls=true + - traefik.http.services.rafiki-auth.loadbalancer.server.port=3006 + + rafiki-backend: + container_name: rafiki-backend-local + image: ghcr.io/interledger/rafiki-backend:v2.2.0-beta + restart: always + privileged: true + volumes: + - ../temp/:/workspace/temp/ + ports: + - '3010:80' + - '3011:3001' + - '3005:3005' + - '3002:3002' + networks: + - testnet + environment: + NODE_ENV: ${NODE_ENV:-development} + LOG_LEVEL: ${LOG_LEVEL:-debug} + ADMIN_PORT: ${RAFIKI_BACKEND_ADMIN_PORT:-3001} + CONNECTOR_PORT: ${RAFIKI_BACKEND_CONNECTOR_PORT:-3002} + OPEN_PAYMENTS_PORT: ${RAFIKI_BACKEND_OPEN_PAYMENTS_PORT:-80} + DATABASE_URL: ${RAFIKI_BACKEND_DATABASE_URL:-postgresql://rafiki_backend:rafiki_backend@postgres-local/rafiki_backend} + USE_TIGERBEETLE: ${RAFIKI_BACKEND_USE_TIGERBEETLE:-false} + NONCE_REDIS_KEY: ${RAFIKI_BACKEND_NONCE_REDIS_KEY:-test} + AUTH_SERVER_GRANT_URL: ${RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL:-http://rafiki-auth:3006} + AUTH_SERVER_INTROSPECTION_URL: ${RAFIKI_BACKEND_AUTH_SERVER_INTROSPECTION_URL:-http://rafiki-auth:3007} + ILP_ADDRESS: ${RAFIKI_BACKEND_ILP_ADDRESS:-test.net} + ILP_CONNECTOR_URL: ${RAFIKI_BACKEND_ILP_CONNECTOR_URL:-http://127.0.0.1:3002} + STREAM_SECRET: ${RAFIKI_BACKEND_STREAM_SECRET:-BjPXtnd00G2mRQwP/8ZpwyZASOch5sUXT5o0iR5b5wU=} + ADMIN_KEY: ${RAFIKI_BACKEND_ADMIN_KEY:-admin} + OPEN_PAYMENTS_URL: ${RAFIKI_BACKEND_OPEN_PAYMENTS_URL:-https://rafiki-backend} + REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} + WALLET_ADDRESS_URL: ${RAFIKI_BACKEND_WALLET_ADDRESS_URL:-https://rafiki-backend/.well-known/pay} + WEBHOOK_URL: ${RAFIKI_BACKEND_WEBHOOK_URL:-http://wallet-backend:3003/webhooks} + WEBHOOK_TIMEOUT: ${RAFIKI_BACKEND_WEBHOOK_TIMEOUT:-60000} + SIGNATURE_SECRET: ${RAFIKI_SIGNATURE_SECRET:-327132b5-99e9-4eb8-8a25-2b7d7738ece1} + EXCHANGE_RATES_URL: ${RAFIKI_BACKEND_EXCHANGE_RATES_URL:-http://wallet-backend:3003/rates} + ENABLE_AUTO_PEERING: ${RAFIKI_BACKEND_ENABLE_AUTO_PEERING:-true} + AUTO_PEERING_SERVER_PORT: ${RAFIKI_BACKEND_AUTO_PEERING_SERVER_PORT:-3005} + INSTANCE_NAME: ${RAFIKI_BACKEND_INSTANCE_NAME:-Testnet Wallet} + SLIPPAGE: ${RAFIKI_BACKEND_SLIPPAGE:-0.01} + KEY_ID: ${RAFIKI_BACKEND_KEY_ID:-rafiki} + WALLET_ADDRESS_REDIRECT_HTML_PAGE: ${RAFIKI_BACKEND_WALLET_ADDRESS_REDIRECT_HTML_PAGE:-https://testnet.test/account?walletAddress=%ewa} + OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} + ADMIN_API_SECRET: ${ADMIN_API_SECRET:-secret-key} + ADMIN_SIGNATURE_VERSION: ${ADMIN_SIGNATURE_VERSION:-1} + AUTH_SERVICE_API_URL: ${RAFIKI_BACKEND_AUTH_SERVICE_API_URL:-http://rafiki-auth:3011} + CARD_SERVICE_URL: ${RAFIKI_BACKEND_CARD_SERVICE_URL:-http://rafiki-card-service:3007} + CARD_WEBHOOK_SERVICE_URL: ${RAFIKI_BACKEND_CARD_WEBHOOK_SERVICE_URL:-http://rafiki-card-service:3007/webhook} + POS_SERVICE_URL: ${RAFIKI_BACKEND_POS_SERVICE_URL:-http://rafiki-pos-service:3014} + POS_WEBHOOK_SERVICE_URL: ${RAFIKI_BACKEND_POS_WEBHOOK_SERVICE_URL:-http://rafiki-pos-service:3014/webhook} + depends_on: + - postgres + - redis + labels: + - traefik.enable=true + - traefik.docker.network=testnet + - traefik.http.routers.rafiki-backend.rule=Host(`rafiki-backend.testnet.test`) + - traefik.http.routers.rafiki-backend.entrypoints=websecure + - traefik.http.routers.rafiki-backend.tls=true + - traefik.http.services.rafiki-backend.loadbalancer.server.port=80 + + rafiki-frontend: + container_name: rafiki-frontend-local + image: ghcr.io/interledger/rafiki-frontend:v2.2.0-beta + depends_on: + - rafiki-backend + restart: always + privileged: true + ports: + - '3012:3012' + networks: + - testnet + environment: + PORT: ${RAFIKI_FRONTEND_PORT:-3012} + GRAPHQL_URL: ${GRAPHQL_URL:-http://rafiki-backend:3001/graphql} + OPEN_PAYMENTS_URL: ${RAFIKI_FRONTEND_OPEN_PAYMENTS_URL:-https://rafiki-backend/} + ENABLE_INSECURE_MESSAGE_COOKIE: ${RAFIKI_FRONTEND_ENABLE_INSECURE_MESSAGE_COOKIE:-true} + AUTH_ENABLED: ${RAFIKI_FRONTEND_AUTH_ENABLED:-false} + SIGNATURE_VERSION: ${RAFIKI_FRONTEND_SIGNATURE_VERSION:-1} + labels: + - traefik.enable=true + - traefik.docker.network=testnet + - traefik.http.routers.rafiki-frontend.rule=Host(`rafiki-frontend.testnet.test`) + - traefik.http.routers.rafiki-frontend.entrypoints=websecure + - traefik.http.routers.rafiki-frontend.tls=true + - traefik.http.services.rafiki-frontend.loadbalancer.server.port=3012 + + rafiki-card-service: + container_name: rafiki-card-service-local + image: ghcr.io/interledger/rafiki-card-service:v2.2.0-beta + restart: always + privileged: true + networks: + - testnet + ports: + - '3007:3007' + environment: + NODE_ENV: ${NODE_ENV:-development} + LOG_LEVEL: ${LOG_LEVEL:-debug} + CARD_SERVICE_PORT: ${RAFIKI_CARD_SERVICE_PORT:-3007} + REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} + GRAPHQL_URL: ${GRAPHQL_URL:-http://rafiki-backend:3001/graphql} + TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} + TENANT_SECRET: ${ADMIN_API_SECRET:-secret-key} + TENANT_SIGNATURE_VERSION: ${RAFIKI_CARD_SERVICE_TENANT_SIGNATURE_VERSION:-1} + labels: + - traefik.enable=true + - traefik.docker.network=testnet + - traefik.http.routers.rafiki-card-service.rule=Host(`rafiki-card-service.testnet.test`) + - traefik.http.routers.rafiki-card-service.entrypoints=websecure + - traefik.http.routers.rafiki-card-service.tls=true + - traefik.http.services.rafiki-card-service.loadbalancer.server.port=3007 diff --git a/local/redis.yaml b/local/redis.yaml new file mode 100644 index 000000000..288ea701d --- /dev/null +++ b/local/redis.yaml @@ -0,0 +1,11 @@ +services: + redis: + container_name: redis + image: 'redis:7-alpine' + restart: unless-stopped + networks: + - testnet + ports: + - '6379:6379' + volumes: + - redis-data:/data diff --git a/local/traefik.yaml b/local/traefik.yaml new file mode 100644 index 000000000..8326a0204 --- /dev/null +++ b/local/traefik.yaml @@ -0,0 +1,25 @@ +services: + traefik: + container_name: traefik-local + image: traefik:v3.2 + command: + - --api.dashboard=true + - --providers.docker=true + - --providers.docker.exposedbydefault=false + - --providers.file.directory=/etc/traefik/dynamic + - --providers.file.watch=true + - --entrypoints.web.address=:80 + - --entrypoints.web.http.redirections.entrypoint.to=websecure + - --entrypoints.web.http.redirections.entrypoint.scheme=https + - --entrypoints.websecure.address=:443 + ports: + - '80:80' + - '443:443' + - '8081:8080' + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + - ./config/certs:/certs:ro + - ./config/traefik/dynamic.yml:/etc/traefik/dynamic/dynamic.yml:ro + restart: unless-stopped + networks: + - testnet diff --git a/local/wallet.yaml b/local/wallet.yaml new file mode 100644 index 000000000..95e6e9bb1 --- /dev/null +++ b/local/wallet.yaml @@ -0,0 +1,113 @@ +services: + # Wallet + wallet-backend: + container_name: wallet-backend-local + build: + context: ../ + args: + DEV_MODE: ${DEV_MODE:-true} + dockerfile: ./packages/wallet/backend/Dockerfile.dev + depends_on: + - postgres + - rafiki-backend + - redis + - mockgatehub + volumes: + - ../packages/wallet/backend:/home/testnet/packages/wallet/backend + - ../packages/wallet/shared:/home/testnet/packages/wallet/shared + environment: + NODE_ENV: ${NODE_ENV:-development} + PORT: ${WALLET_BACKEND_PORT:-3003} + DEBUG_PORT: ${WALLET_BACKEND_DEBUG_PORT:-9229} + DATABASE_URL: ${WALLET_BACKEND_DATABASE_URL:-postgres://wallet_backend:wallet_backend@postgres-local/wallet_backend} + COOKIE_NAME: ${WALLET_BACKEND_COOKIE_NAME:-testnet.cookie} + COOKIE_PASSWORD: ${WALLET_BACKEND_COOKIE_PASSWORD:-testnet.cookie.password.super.secret.ilp} + COOKIE_TTL: ${WALLET_BACKEND_COOKIE_TTL:-2630000} + OPEN_PAYMENTS_HOST: ${WALLET_BACKEND_OPEN_PAYMENTS_HOST:-https://rafiki-backend} + GRAPHQL_ENDPOINT: ${WALLET_BACKEND_GRAPHQL_ENDPOINT:-http://rafiki-backend:3001/graphql} + AUTH_GRAPHQL_ENDPOINT: ${WALLET_BACKEND_AUTH_GRAPHQL_ENDPOINT:-http://rafiki-auth:3008/graphql} + AUTH_DOMAIN: ${WALLET_BACKEND_AUTH_DOMAIN:-http://rafiki-auth:3006} + AUTH_IDENTITY_SERVER_SECRET: ${AUTH_IDENTITY_SERVER_SECRET:-auth-secret-key-12345} + RAFIKI_WEBHOOK_SIGNATURE_SECRET: ${RAFIKI_SIGNATURE_SECRET:-327132b5-99e9-4eb8-8a25-2b7d7738ece1} + SENDGRID_API_KEY: ${SENDGRID_API_KEY:-} + FROM_EMAIL: ${FROM_EMAIL:-noreply@testnet.local} + SEND_EMAIL: ${SEND_EMAIL:-false} + REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} + GATEHUB_API_BASE_URL: ${GATEHUB_API_BASE_URL:-http://mockgatehub:8080} + GATEHUB_ENV: ${GATEHUB_ENV:-sandbox} + GATEHUB_IFRAME_BASE_URL: ${GATEHUB_IFRAME_BASE_URL:-https://mockgatehub.testnet.test} + GATEHUB_ACCESS_KEY: ${GATEHUB_ACCESS_KEY:-local-test-app-id} + GATEHUB_SECRET_KEY: ${GATEHUB_SECRET_KEY:-local-test-app-secret} + GATEHUB_WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET:-6d6f636b5f776562686f6f6b5f736563726574} + GATEHUB_GATEWAY_UUID: ${GATEHUB_GATEWAY_UUID:-mock_gateway_uuid} + GATEHUB_SETTLEMENT_WALLET_ADDRESS: ${GATEHUB_SETTLEMENT_WALLET_ADDRESS:-rMockSettlementAddress} + GATEHUB_ORG_ID: ${GATEHUB_ORG_ID:-mock_org_id} + GATEHUB_CARD_APP_ID: ${GATEHUB_CARD_APP_ID:-mock_card_app_id} + RATE_LIMIT: ${RATE_LIMIT:-false} + RATE_LIMIT_LEVEL: ${RATE_LIMIT_LEVEL:-LAX} + GATEHUB_ACCOUNT_PRODUCT_CODE: ${GATEHUB_ACCOUNT_PRODUCT_CODE:-account_product} + GATEHUB_CARD_PRODUCT_CODE: ${GATEHUB_CARD_PRODUCT_CODE:-card_product} + GATEHUB_NAME_ON_CARD: ${GATEHUB_NAME_ON_CARD:-TestnetUser} + GATEHUB_CARD_PP_PREFIX: ${GATEHUB_CARD_PP_PREFIX:-TEST} + CARD_DATA_HREF: ${CARD_DATA_HREF:-https://card.example.com/data} + CARD_PIN_HREF: ${CARD_PIN_HREF:-https://card.example.com/pin} + STRIPE_SECRET_KEY: ${STRIPE_SECRET_KEY:-notset} + STRIPE_WEBHOOK_SECRET: ${STRIPE_WEBHOOK_SECRET:-notset} + USE_STRIPE: ${USE_STRIPE:-false} + OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} + ADMIN_API_SECRET: ${ADMIN_API_SECRET:-secret-key} + ADMIN_SIGNATURE_VERSION: ${ADMIN_SIGNATURE_VERSION:-1} + WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET:-6d6f636b5f776562686f6f6b5f736563726574} + restart: always + networks: + - testnet + ports: + - '3003:3003' + - '9229:9229' # Map debugger port to local machine's port 9229 + labels: + - traefik.enable=true + - traefik.docker.network=testnet + - traefik.http.routers.wallet-backend.rule=Host(`api.testnet.test`) + - traefik.http.routers.wallet-backend.entrypoints=websecure + - traefik.http.routers.wallet-backend.tls=true + - traefik.http.services.wallet-backend.loadbalancer.server.port=3003 + + wallet-frontend: + container_name: wallet-frontend-local + build: + context: .. + args: + DEV_MODE: ${DEV_MODE:-true} + NEXT_PUBLIC_BACKEND_URL: ${NEXT_PUBLIC_BACKEND_URL:-https://api.testnet.test} + NEXT_PUBLIC_AUTH_HOST: ${NEXT_PUBLIC_AUTH_HOST:-https://auth.testnet.test} + NEXT_PUBLIC_OPEN_PAYMENTS_HOST: ${NEXT_PUBLIC_OPEN_PAYMENTS_HOST:-https://rafiki-backend.testnet.test} + NEXT_PUBLIC_GATEHUB_ENV: ${NEXT_PUBLIC_GATEHUB_ENV:-sandbox} + NEXT_PUBLIC_THEME: ${NEXT_PUBLIC_THEME:-light} + NEXT_PUBLIC_FEATURES_ENABLED: ${NEXT_PUBLIC_FEATURES_ENABLED:-false} + dockerfile: ./packages/wallet/frontend/Dockerfile.dev + depends_on: + - wallet-backend + volumes: + - ../packages/wallet/frontend:/home/testnet/packages/wallet/frontend + - ../packages/wallet/shared:/home/testnet/packages/wallet/shared + environment: + NODE_ENV: ${NODE_ENV:-development} + BACKEND_URL: ${WALLET_FRONTEND_BACKEND_URL:-http://wallet-backend:3003} + NEXT_PUBLIC_BACKEND_URL: ${NEXT_PUBLIC_BACKEND_URL:-https://api.testnet.test} + NEXT_PUBLIC_AUTH_HOST: ${NEXT_PUBLIC_AUTH_HOST:-https://auth.testnet.test} + NEXT_PUBLIC_OPEN_PAYMENTS_HOST: ${NEXT_PUBLIC_OPEN_PAYMENTS_HOST:-https://rafiki-backend.testnet.test} + NEXT_PUBLIC_GATEHUB_ENV: ${NEXT_PUBLIC_GATEHUB_ENV:-sandbox} + NEXT_PUBLIC_THEME: ${NEXT_PUBLIC_THEME:-light} + NEXT_PUBLIC_FEATURES_ENABLED: ${NEXT_PUBLIC_FEATURES_ENABLED:-false} + restart: always + networks: + - testnet + ports: + - '4003:4003' + labels: + - traefik.enable=true + - traefik.docker.network=testnet + - traefik.http.routers.wallet-frontend.rule=Host(`testnet.test`) + - traefik.http.routers.wallet-frontend.entrypoints=websecure + - traefik.http.routers.wallet-frontend.tls=true + - traefik.http.services.wallet-frontend.loadbalancer.server.port=4003 From 6d32acfbbebf09318557746470f8483007c44b4f Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Sun, 5 Apr 2026 18:55:40 +0200 Subject: [PATCH 09/51] ci: changed configuration scheme to fail fast if misconfigured --- local/.env.example | 33 +++++++++--- local/Makefile | 39 +++++++++++--- local/config/certs/local.crt | 32 ++++++------ local/config/certs/local.key | 52 +++++++++---------- local/wallet.yaml | 4 +- packages/wallet/backend/src/config/env.ts | 17 +++++- packages/wallet/backend/src/gatehub/client.ts | 24 ++------- 7 files changed, 122 insertions(+), 79 deletions(-) diff --git a/local/.env.example b/local/.env.example index 9d488b07f..406e05b33 100644 --- a/local/.env.example +++ b/local/.env.example @@ -56,10 +56,13 @@ SEND_EMAIL=false # --- Mock defaults (active when the override block below is commented) ----- # GATEHUB_API_BASE_URL is used by the backend for signed GateHub API calls. -# GATEHUB_IFRAME_BASE_URL is used for browser-facing iframe URLs returned to FE. +# The three GATEHUB_IFRAME_*_URL values are required and used for browser-facing +# iframe URLs. Backend startup fails if any of them is missing. GATEHUB_API_BASE_URL=http://mockgatehub:8080 GATEHUB_ENV=sandbox -GATEHUB_IFRAME_BASE_URL=http://localhost:8080 +GATEHUB_IFRAME_MANAGED_RAMP_URL=http://localhost:8080 +GATEHUB_IFRAME_EXCHANGE_URL=http://localhost:8080 +GATEHUB_IFRAME_ONBOARDING_URL=http://localhost:8080 GATEHUB_ACCESS_KEY=mock_access_key GATEHUB_SECRET_KEY=mock_secret_key GATEHUB_WEBHOOK_SECRET=6d6f636b5f776562686f6f6b5f736563726574 @@ -68,17 +71,33 @@ GATEHUB_SETTLEMENT_WALLET_ADDRESS=$ilp.interledger-test.dev/interledger GATEHUB_ORG_ID=mock-org-id GATEHUB_CARD_APP_ID=mock-card-app-id +# --- Real GateHub endpoint reference -------------------------------------- +# Use these endpoint shapes when configuring real GateHub hosts. +# +# Sandbox: +# GATEHUB_API_BASE_URL=https://api.sandbox.gatehub.net +# GATEHUB_IFRAME_MANAGED_RAMP_URL=https://managed-ramp.sandbox.gatehub.net +# GATEHUB_IFRAME_EXCHANGE_URL=https://exchange.sandbox.gatehub.net +# GATEHUB_IFRAME_ONBOARDING_URL=https://onboarding.sandbox.gatehub.net +# +# Production: +# GATEHUB_API_BASE_URL=https://api.gatehub.net +# GATEHUB_IFRAME_MANAGED_RAMP_URL=https://managed-ramp.gatehub.net +# GATEHUB_IFRAME_EXCHANGE_URL=https://exchange.gatehub.net +# GATEHUB_IFRAME_ONBOARDING_URL=https://onboarding.gatehub.net + # --- Real GateHub Sandbox overrides ---------------------------------------- # To use the real sandbox, comment out the mock block above and uncomment the # lines below, filling in your credentials. # -# IMPORTANT: Leave GATEHUB_API_BASE_URL and GATEHUB_IFRAME_BASE_URL **unset** -# (or comment them out) unless you need custom hosts. When they are absent the -# wallet backend auto-constructs the correct GateHub sub-domain URLs based on -# GATEHUB_ENV. +# IMPORTANT: Keep all three GATEHUB_IFRAME_* URL values configured. +# For real sandbox they should be the GateHub hosts shown below. # # GATEHUB_ENV=sandbox -# GATEHUB_IFRAME_BASE_URL=https://sandbox.gatehub.net +# GATEHUB_API_BASE_URL=https://api.sandbox.gatehub.net +# GATEHUB_IFRAME_MANAGED_RAMP_URL=https://managed-ramp.sandbox.gatehub.net +# GATEHUB_IFRAME_EXCHANGE_URL=https://exchange.sandbox.gatehub.net +# GATEHUB_IFRAME_ONBOARDING_URL=https://onboarding.sandbox.gatehub.net # GATEHUB_ACCESS_KEY= # GATEHUB_SECRET_KEY= # GATEHUB_WEBHOOK_SECRET= diff --git a/local/Makefile b/local/Makefile index 78b2c28c4..3ae86e83f 100644 --- a/local/Makefile +++ b/local/Makefile @@ -7,28 +7,39 @@ help: @echo "help Show this help message" @echo "all Start full local stack (with Traefik)" @echo "all-nowatch Start full local stack in background" + @echo "build Build docker images for local stack" + @echo "rebuild Force rebuild docker images (no cache)" @echo "down Stop the local stack" @echo "hosts Add testnet host aliases to /etc/hosts (requires sudo)" - @echo "certs Generate self-signed TLS certificate for local domains" - @echo "trust Trust local TLS certificate (auto-detect OS)" + @echo "certs Generate TLS cert if missing (set FORCE_CERTS=1 to regenerate)" + @echo "trust Trust local TLS certificate (auto-detect OS, reloads Traefik)" @echo "trust-macos Trust certificate on macOS" - @echo "trust-linux Trust certificate on Debian-based Linux" + @echo "trust-linux Trust certificate on Debian-based Linux (reloads Traefik)" @echo "" -.PHONY: help all all-nowatch down hosts certs trust trust-macos trust-linux +.PHONY: help all all-nowatch build rebuild down hosts certs trust trust-macos trust-linux all: certs - $(COMPOSE) up - -all-nowatch: certs $(COMPOSE) up -d + @echo "" + @echo "Open these URLs in your browser and accept the self-signed certificate:" + @echo " - https://mockgatehub.testnet.test" + @echo " - https://testnet.test" + +build: + $(COMPOSE) build + +rebuild: + $(COMPOSE) build --no-cache down: $(COMPOSE) down certs: mkdir -p config/certs - @if [ "$(HEADLESS)" = "1" ]; then \ + @if [ -f config/certs/local.crt ] && [ -f config/certs/local.key ] && [ "$(FORCE_CERTS)" != "1" ]; then \ + echo "TLS cert already exists. Reusing it (set FORCE_CERTS=1 to regenerate)."; \ + elif [ "$(HEADLESS)" = "1" ]; then \ openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ -keyout config/certs/local.key -out config/certs/local.crt \ -subj "/CN=testnet.test/O=Interledger/C=US" \ @@ -48,6 +59,12 @@ trust: certs trust-macos: certs sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain config/certs/local.crt + @if $(COMPOSE) ps --status running --services traefik 2>/dev/null | grep -q '^traefik$$'; then \ + echo "Reloading Traefik to pick up trusted cert..."; \ + $(COMPOSE) restart traefik; \ + else \ + echo "Traefik is not running; skipping reload."; \ + fi trust-linux: certs sudo cp config/certs/local.crt /usr/local/share/ca-certificates/interledger-testnet-local.crt @@ -56,6 +73,12 @@ trust-linux: certs mkdir -p $(HOME)/.pki/nssdb certutil -d sql:$(HOME)/.pki/nssdb -N --empty-password certutil -d sql:$(HOME)/.pki/nssdb -A -t "C,," -n "testnet.test" -i config/certs/local.crt + @if $(COMPOSE) ps --status running --services traefik 2>/dev/null | grep -q '^traefik$$'; then \ + echo "Reloading Traefik to pick up trusted cert..."; \ + $(COMPOSE) restart traefik; \ + else \ + echo "Traefik is not running; skipping reload."; \ + fi HOSTS := testnet.test \ api.testnet.test \ diff --git a/local/config/certs/local.crt b/local/config/certs/local.crt index 194a9b10d..425a28954 100644 --- a/local/config/certs/local.crt +++ b/local/config/certs/local.crt @@ -1,24 +1,24 @@ -----BEGIN CERTIFICATE----- -MIIECjCCAvKgAwIBAgIUS43Vnhrq0UiMfbyae2RuNcth7YQwDQYJKoZIhvcNAQEL +MIIECjCCAvKgAwIBAgIUGQpgTEawPo2sgagRQ0Z817S6fkIwDQYJKoZIhvcNAQEL BQAwOjEVMBMGA1UEAwwMdGVzdG5ldC50ZXN0MRQwEgYDVQQKDAtJbnRlcmxlZGdl -cjELMAkGA1UEBhMCVVMwHhcNMjYwNDAxMDgxNTAyWhcNMzYwMzI5MDgxNTAyWjA6 +cjELMAkGA1UEBhMCVVMwHhcNMjYwNDA1MTYzMTQ5WhcNMzYwNDAyMTYzMTQ5WjA6 MRUwEwYDVQQDDAx0ZXN0bmV0LnRlc3QxFDASBgNVBAoMC0ludGVybGVkZ2VyMQsw -CQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMIx9o8W -gwPRmVQyBy/xvtT5ahbNTCdHBFFFWxvSx85wTzkx6EZ2eYOiP58LsPTD24CSjSlz -QifVE6WlMb5HS8PK4Ni6i6hYmrIhtLL54peQPIo0WjABNODBNFgK64KFh3tkciL4 -r9FBBbUibAyFeAwfO+2a3Ubio88DOi+PBI4QSABPcin4viM7xSUg35LFUlYRND8S -xTKFp9Sm2A937Jgk23E7rcAZabNTo/QnPOFdfpNe8IXa8ru2HGrCsMSFNgz2D9T5 -9XrR9N/NjKpl6ba4/1U9rar4rRPffRKiDBBdSVfH1haZm9KMI3jYhFWzzTNWGm46 -iz1SgW47+uicHUkCAwEAAaOCAQYwggECMIHgBgNVHREEgdgwgdWCDHRlc3RuZXQu +CQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM7+4Llw +6aibJCJrFzyKvmrXykalyI955nD04P6ZHKhIPZYANWPUe4/ps5ZsqJFUUG0KTtkd +uEHp+eN8sOTNSZ+VcSKzecp+9lMLTUUMKWNxC8ktiWbvS7wxvOHR/tOpATQSz/VT +J/jHLemcURszhv8RGa+9ErKPYWyJJqnhaiLzB1ljyxIKFPQBIgxnEdGiFaNLOIXP +Oemuev/auL7P/f3/yIXY2ecisGvR3bBI4Y9HL2zNEfsmgBmA402ONlQuKNyMnchx +mP6YU5DyUVjYD3sS3v8obdtYM0ud2bNb07gqjzMOP5qVzN7YS1wyvz1XSpZDprRA +QwNKw5cPcZJrWG8CAwEAAaOCAQYwggECMIHgBgNVHREEgdgwgdWCDHRlc3RuZXQu dGVzdIIQYXBpLnRlc3RuZXQudGVzdIIRYXV0aC50ZXN0bmV0LnRlc3SCGHJhZmlr aS1hdXRoLnRlc3RuZXQudGVzdIIbcmFmaWtpLWJhY2tlbmQudGVzdG5ldC50ZXN0 ghxyYWZpa2ktZnJvbnRlbmQudGVzdG5ldC50ZXN0giByYWZpa2ktY2FyZC1zZXJ2 aWNlLnRlc3RuZXQudGVzdIIYbW9ja2dhdGVodWIudGVzdG5ldC50ZXN0gglsb2Nh -bGhvc3SHBH8AAAEwHQYDVR0OBBYEFP5uOsnJBUtzK3DlECFIWCiPZbUUMA0GCSqG -SIb3DQEBCwUAA4IBAQBTPWsxL3Bh/IL4sCj55NgwwD4tCUcWoamDZ6f2ATgyp07s -fTxJYFjQTurPGAnSfecPc53qkzADnP0j1IULhC8fqf9BADc10uPtRdvZYRrX8VVr -eeOJ7QLGAD3+loGLO7cLHYeeJ8g1DEVsfL+zlFyYaB/yzHoKnglPUHUpKaMQMYQ1 -eyetyfWb38a3vyDvHejtgXol8HwqgA0qgoWjYQVQuCZZp0gBX5t+tJURlBY8vbRc -3tnoSkzVgRE9gZMMy6kNQhumEqbx3sv3jPNbbglBNEElWjYq4v6rB5Ash6e81PaP -N0kFQX1+LOgflmQ/WOJObQNrAITlXnta9HbcTMp4 +bGhvc3SHBH8AAAEwHQYDVR0OBBYEFJ7UXeBz9oTZq2km4kkxZKvmuK1eMA0GCSqG +SIb3DQEBCwUAA4IBAQBu1O2eIVSCALkaG6CEZ6u5xxXlHf+cmVi82hdMw3inP0Zj +5DVis6a6QbHJ+9BkEEm0e8gZAvCQb1KPYDedHisb5DrCTxolqipD6kwTwgunc/Hf +dINZfTi/FYhk+JrXl0H8h1VBTWxt84VUcwltuHX5xGDeI8KohV+HIBlqZrl1uzWX +ktG8Bwl2tu2D7TwoVA0scchaH16ZbXgi32ZCyEsFBKPqLjsnUp+5Ympa2fiY+R9j +jDk7LNUxXz/FPCF25f4dPjSlI2GUndO85GPcg1svhhjcKxq81AxXJqeFHgC2noCj +OxKlwDbiXhtdGMjcj/82sHkmTa8APC7CdVhqI9cl -----END CERTIFICATE----- diff --git a/local/config/certs/local.key b/local/config/certs/local.key index 1a3bbbc2a..60bec6d01 100644 --- a/local/config/certs/local.key +++ b/local/config/certs/local.key @@ -1,28 +1,28 @@ -----BEGIN PRIVATE KEY----- -MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDCMfaPFoMD0ZlU -Mgcv8b7U+WoWzUwnRwRRRVsb0sfOcE85MehGdnmDoj+fC7D0w9uAko0pc0In1ROl -pTG+R0vDyuDYuouoWJqyIbSy+eKXkDyKNFowATTgwTRYCuuChYd7ZHIi+K/RQQW1 -ImwMhXgMHzvtmt1G4qPPAzovjwSOEEgAT3Ip+L4jO8UlIN+SxVJWETQ/EsUyhafU -ptgPd+yYJNtxO63AGWmzU6P0JzzhXX6TXvCF2vK7thxqwrDEhTYM9g/U+fV60fTf -zYyqZem2uP9VPa2q+K0T330SogwQXUlXx9YWmZvSjCN42IRVs80zVhpuOos9UoFu -O/ronB1JAgMBAAECggEAKBORk6QMs7wMzaBpdU6JmIBEkaIapjx0uqT6kXple8gX -wXD4Q5ptp2nTgWozQcAty5HzCevcakYCAPxfkKo8C5MR5ghRjBOFEV/9X7ZMOgUt -SURWnHOTSxL0T3spcU1HUYLAP1FdT20A1YneDJN6292SS43bPqbFMZKz7l6wjPSY -iqqJPtcz0QE/EDML1l7WCvjUyMVhzUhjororUfY1VD7TttRJ/xYd/vjbvugXWHab -PMXAgYCeYR2wmnuXkvKtzxrKYO3S0ivUlmtrHg5GvvoMH+GtB6Hm9va9ZuHGtEVG -QMw24/z0IJ1fN7jHyZElhJjAdRuoIgC1A8MDAFNs1QKBgQD6+qCUqSB/s//EDypt -FL7f5E/MjuqpAjbqQ0ghgICoHIucvT81G2bs+IJyOF+gqlifCuADLHad0CCfo43T -xQCKtCMJeVUwq+ZN9fsnpNDm7FZM0RzVdZE7zlabcK8lM8uAMZNBstu5hdrHP5Xv -9Ew0KqTWq8Yq1nK73zzvZdy0gwKBgQDGFIVlV39nG06NY9R9Z+K9vkO1mlk8cr2t -tD0nLVNiV6ukxNT9rjc+/DdCR+zRVccd+B0owlNua9G4qazdeuK1MY51c4IFmT9f -7dDGjGETkyhlvvDrt6rQhPe8OCNw2F4tp7OI+OWJKEQcjGQ5SvUZ60EifKpMMXtD -oObNg/N1QwKBgBNgrm1L8Zpqh2DX2uq5I1OeCRs+HZgW9652q2cKyOQx8AWWBv9O -sk+xkEDJYXjCLj15VXppQG9G1n383sJu/2+2IM5mc9FiNFHooA+bhhWOQcuEiblh -bmkzsTQnKx6wNRIcwcXczWIxl4ayvhzcu9V7RWbdtFsyW4Ft5wKE1tmJAoGATbKA -/NaMf/pDHsz47dQRKdJ3JsYLmN19L6TSlAqAecPf7TrUPUnYG9m9Jz+lUhuuhj/r -2DAZn+elFSVhTGNGiEKPGd0cNGv/Yvaa/TbVYWNI5lg2ko+x7icqMednZ31Hu+rb -TrArAVkNFpGvQpX3fJo+K3PxLP//1PBJeHX4ypcCgYA3ejka+z0oTwz79Behxq98 -uFzivPTIAgwU2EnTV+OUNi8UHrLCY6dmEKlKzftyex35sdrv5jxgqARxcB8zDXxs -NoRlvuo8gRRqiAs+jKbyPWRmXxBl4J2inMbCXnEBWptZ7GgEbmqGF5GbWtj/vCxx -Xx+fGIHOcMO49HgDiq3pTQ== +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDO/uC5cOmomyQi +axc8ir5q18pGpciPeeZw9OD+mRyoSD2WADVj1HuP6bOWbKiRVFBtCk7ZHbhB6fnj +fLDkzUmflXEis3nKfvZTC01FDCljcQvJLYlm70u8Mbzh0f7TqQE0Es/1Uyf4xy3p +nFEbM4b/ERmvvRKyj2FsiSap4Woi8wdZY8sSChT0ASIMZxHRohWjSziFzznprnr/ +2ri+z/39/8iF2NnnIrBr0d2wSOGPRy9szRH7JoAZgONNjjZULijcjJ3IcZj+mFOQ +8lFY2A97Et7/KG3bWDNLndmzW9O4Ko8zDj+alcze2EtcMr89V0qWQ6a0QEMDSsOX +D3GSa1hvAgMBAAECggEAHYHgim7Z0CrgJCE8pxO8K0I8V9qAKaZzPtJEVJGCWqGE +WKK0+a3WOLX+33L5Nfuymf392XN5dblN4auVEo4KcGZUQgxwUHki0hnAAmzGZaI9 +ejM0mBOFVKbedG6ECKuEkWYby66hTxR4VgnuLJYpff4eZEVBVL+dtWQjun8jVdHU +ztroyjvCMXEyLvyQ7tPReEJLyH0+r60TkD9nMFiE6wXZHnczi2mjEPZ4a+Dg9koe +lBPcl3RDeCb5F8OBQbEV2z8t2YimeZQKSeG/R6DAVKNJYU1JNVzSG61itSftTv7m +/8I/J35Cyes5FmtC35d0HolvTR+Klj/u05fH2uxq0QKBgQDuc3yyobR7Nu62rUZg +gUkr2xVtxbvtJ/lcnH4/eMcDQq8ubUF8wV0lh6km9VlGofWLOE/LZ//u6F0fmqlJ +CqxnMcI7OLaypAmR5t+JwibC98nDlpFaIhBGrs1sLg+JJtZdm4m78vLUlfzUz+3m +QYrjIXV7i6IHUUBd9hcUWFPz5wKBgQDeOsGzhZxeXJsQ4CTVIs15S0yd6HJ2clbP +7UlKFbb+fTy0P1RBdrQXr3DcvJAO6mvSvyswGwO0X8HEhNn005OwnSleCfBoJsWQ +f3ZIE3/W0a85qaSSg5TBkYLOJOOVhhjsSr+T0fF6efYrvaEAjBR/eqUkk3RJ1zhg +Lfu2lZRmOQKBgFirFSmPu/89dBL15/+m08C9HQDO0IzlmnJ3tvJ/RPHPcDkBY6Ky +fKKiCaJ1BZegTiBQ9ksbBy6dtVM1PdHtaCKPfDxtYHKZUP2yLlmZmrRRU/OpH6+2 +jvrZsYWSszA7AueYGOWM+ANZKsUv9LT0lmLTZE5mo/+4lQjbo8Vq+vztAoGBAJF6 +14mFg0tGxoCyq4oX4XlxMPQC0sP1sB0oUp08P/Kz28SH3MmKQvVqdbEbhBcvoWxy +l3xDgxZWxYu4CNM8mue4yvbz/LzB/P3OY4llsn/X/yT5iHIdz4k0j/QRtCcThUdS +272SZ8ntA5m45yhri5O0n12lZjBcw1w7Xhg2LdMJAoGAD5CiVDexVqtC56uycAej +NGcIsPVq/f6uUtFeIr21FrloSpdhpjKmeQMKqvHtDgIafFcuuBHcULufWuqoe6x1 +RDiUQPp6Im2WrTZXReNpUJLW6y8Ev98VHzRoODVOzx1jl1A/ebJP71NsSU6Fabyz +Ok7w6RV3iXvbVYXIK/N6XX4= -----END PRIVATE KEY----- diff --git a/local/wallet.yaml b/local/wallet.yaml index 95e6e9bb1..4db45245a 100644 --- a/local/wallet.yaml +++ b/local/wallet.yaml @@ -35,7 +35,9 @@ services: REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} GATEHUB_API_BASE_URL: ${GATEHUB_API_BASE_URL:-http://mockgatehub:8080} GATEHUB_ENV: ${GATEHUB_ENV:-sandbox} - GATEHUB_IFRAME_BASE_URL: ${GATEHUB_IFRAME_BASE_URL:-https://mockgatehub.testnet.test} + GATEHUB_IFRAME_MANAGED_RAMP_URL: ${GATEHUB_IFRAME_MANAGED_RAMP_URL:-https://mockgatehub.testnet.test} + GATEHUB_IFRAME_EXCHANGE_URL: ${GATEHUB_IFRAME_EXCHANGE_URL:-https://mockgatehub.testnet.test} + GATEHUB_IFRAME_ONBOARDING_URL: ${GATEHUB_IFRAME_ONBOARDING_URL:-https://mockgatehub.testnet.test} GATEHUB_ACCESS_KEY: ${GATEHUB_ACCESS_KEY:-local-test-app-id} GATEHUB_SECRET_KEY: ${GATEHUB_SECRET_KEY:-local-test-app-secret} GATEHUB_WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET:-6d6f636b5f776562686f6f6b5f736563726574} diff --git a/packages/wallet/backend/src/config/env.ts b/packages/wallet/backend/src/config/env.ts index 62dc86140..49d133a87 100644 --- a/packages/wallet/backend/src/config/env.ts +++ b/packages/wallet/backend/src/config/env.ts @@ -13,7 +13,22 @@ const envSchema = z.object({ .default('testnet.cookie.password.super.secret.ilp'), // min. 32 chars COOKIE_TTL: z.coerce.number().default(2630000), // 1 month GATEHUB_ENV: z.enum(['production', 'sandbox']).default('sandbox'), - GATEHUB_API_BASE_URL: z.string().optional(), + // Required GateHub API base URL (fail fast if missing). + // Real GateHub examples: + // - Sandbox: https://api.sandbox.gatehub.net + // - Production: https://api.gatehub.net + GATEHUB_API_BASE_URL: z.string().url(), + // Required iframe URLs (fail fast if missing). + // Real GateHub examples: + // - Sandbox: https://managed-ramp.sandbox.gatehub.net + // https://exchange.sandbox.gatehub.net + // https://onboarding.sandbox.gatehub.net + // - Production: https://managed-ramp.gatehub.net + // https://exchange.gatehub.net + // https://onboarding.gatehub.net + GATEHUB_IFRAME_MANAGED_RAMP_URL: z.string().url(), + GATEHUB_IFRAME_EXCHANGE_URL: z.string().url(), + GATEHUB_IFRAME_ONBOARDING_URL: z.string().url(), GATEHUB_ACCESS_KEY: z.string().default('GATEHUB_ACCESS_KEY'), GATEHUB_SECRET_KEY: z.string().default('GATEHUB_SECRET_KEY'), GATEHUB_SEPA_ACCESS_KEY: z.string().optional(), diff --git a/packages/wallet/backend/src/gatehub/client.ts b/packages/wallet/backend/src/gatehub/client.ts index 92a75055a..084f24060 100644 --- a/packages/wallet/backend/src/gatehub/client.ts +++ b/packages/wallet/backend/src/gatehub/client.ts @@ -68,7 +68,6 @@ export class GateHubClient { private supportedAssetCodes: string[] private clientIds = SANDBOX_CLIENT_IDS private vaultIds = SANDBOX_VAULT_IDS - private mainUrl = 'sandbox.gatehub.net' private iframeMappings: Record< IFRAME_TYPE, @@ -86,7 +85,6 @@ export class GateHubClient { if (this.isProduction) { this.clientIds = PRODUCTION_CLIENT_IDS this.vaultIds = PRODUCTION_VAULT_IDS - this.mainUrl = 'gatehub.net' } this.supportedAssetCodes = Object.keys(this.vaultIds) @@ -97,33 +95,19 @@ export class GateHubClient { } get apiUrl() { - // If GATEHUB_API_BASE_URL is set (e.g., for local development with mockgatehub), - // use it instead of constructing the URL from mainUrl - if (this.env.GATEHUB_API_BASE_URL) { - return this.env.GATEHUB_API_BASE_URL - } - return `https://api.${this.mainUrl}` + return this.env.GATEHUB_API_BASE_URL } get rampUrl() { - if (this.env.GATEHUB_API_BASE_URL) { - return this.apiUrl - } - return `https://managed-ramp.${this.mainUrl}` + return this.env.GATEHUB_IFRAME_MANAGED_RAMP_URL } get exchangeUrl() { - if (this.env.GATEHUB_API_BASE_URL) { - return this.apiUrl - } - return `https://exchange.${this.mainUrl}` + return this.env.GATEHUB_IFRAME_EXCHANGE_URL } get onboardingUrl() { - if (this.env.GATEHUB_API_BASE_URL) { - return this.apiUrl - } - return `https://onboarding.${this.mainUrl}` + return this.env.GATEHUB_IFRAME_ONBOARDING_URL } async getWithdrawalUrl(managedUserUuid: string): Promise { From 61c1fe7fc0d9e50a6ed97ffd3e64cbbf2f14a14c Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Sun, 5 Apr 2026 19:14:17 +0200 Subject: [PATCH 10/51] ci: makefile target for rafiki assets --- local/.env.example | 1 + local/Makefile | 12 +++++++++--- local/wallet.yaml | 1 + 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/local/.env.example b/local/.env.example index 406e05b33..37a34e3e7 100644 --- a/local/.env.example +++ b/local/.env.example @@ -35,6 +35,7 @@ DEV_MODE=true # Wallet Backend secrets and config AUTH_IDENTITY_SERVER_SECRET=dev_identity_server_secret +RAFIKI_MONEY_FRONTEND_HOST=testnet.test SENDGRID_API_KEY= FROM_EMAIL= SEND_EMAIL=false diff --git a/local/Makefile b/local/Makefile index 3ae86e83f..34e139f72 100644 --- a/local/Makefile +++ b/local/Makefile @@ -9,6 +9,7 @@ help: @echo "all-nowatch Start full local stack in background" @echo "build Build docker images for local stack" @echo "rebuild Force rebuild docker images (no cache)" + @echo "rafiki-assets Run Rafiki asset setup script" @echo "down Stop the local stack" @echo "hosts Add testnet host aliases to /etc/hosts (requires sudo)" @echo "certs Generate TLS cert if missing (set FORCE_CERTS=1 to regenerate)" @@ -17,13 +18,15 @@ help: @echo "trust-linux Trust certificate on Debian-based Linux (reloads Traefik)" @echo "" -.PHONY: help all all-nowatch build rebuild down hosts certs trust trust-macos trust-linux +.PHONY: help all all-nowatch build rebuild rafiki-assets down hosts certs trust trust-macos trust-linux all: certs $(COMPOSE) up -d @echo "" - @echo "Open these URLs in your browser and accept the self-signed certificate:" - @echo " - https://mockgatehub.testnet.test" + @echo "Please open these ALL of these URLs in your browser and accept the self-signed certificates:" + @echo " - https://mockgatehub.testnet.test/health" + @echo " - https://api.testnet.test/health" + @echo " - https://rafiki-frontend.testnet.test" @echo " - https://testnet.test" build: @@ -32,6 +35,9 @@ build: rebuild: $(COMPOSE) build --no-cache +rafiki-assets: + node ./scripts/rafiki-setup.js + down: $(COMPOSE) down diff --git a/local/wallet.yaml b/local/wallet.yaml index 4db45245a..ed92dec1f 100644 --- a/local/wallet.yaml +++ b/local/wallet.yaml @@ -24,6 +24,7 @@ services: COOKIE_PASSWORD: ${WALLET_BACKEND_COOKIE_PASSWORD:-testnet.cookie.password.super.secret.ilp} COOKIE_TTL: ${WALLET_BACKEND_COOKIE_TTL:-2630000} OPEN_PAYMENTS_HOST: ${WALLET_BACKEND_OPEN_PAYMENTS_HOST:-https://rafiki-backend} + RAFIKI_MONEY_FRONTEND_HOST: ${RAFIKI_MONEY_FRONTEND_HOST:-testnet.test} GRAPHQL_ENDPOINT: ${WALLET_BACKEND_GRAPHQL_ENDPOINT:-http://rafiki-backend:3001/graphql} AUTH_GRAPHQL_ENDPOINT: ${WALLET_BACKEND_AUTH_GRAPHQL_ENDPOINT:-http://rafiki-auth:3008/graphql} AUTH_DOMAIN: ${WALLET_BACKEND_AUTH_DOMAIN:-http://rafiki-auth:3006} From e94d6d3652f38de82431dea028e94d52b8a9f21c Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Sun, 5 Apr 2026 21:09:50 +0200 Subject: [PATCH 11/51] ci: default rafiki seeder will only seed two currencies for now --- local/Makefile | 4 ++++ local/mockgatehub.yaml | 2 +- local/scripts/rafiki-setup.js | 16 ++++++++-------- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/local/Makefile b/local/Makefile index 34e139f72..d367ac656 100644 --- a/local/Makefile +++ b/local/Makefile @@ -41,6 +41,10 @@ rafiki-assets: down: $(COMPOSE) down +reset: down + # Remove volumes + @$(COMPOSE) down -v + certs: mkdir -p config/certs @if [ -f config/certs/local.crt ] && [ -f config/certs/local.key ] && [ "$(FORCE_CERTS)" != "1" ]; then \ diff --git a/local/mockgatehub.yaml b/local/mockgatehub.yaml index a178b3b5d..fe0026908 100644 --- a/local/mockgatehub.yaml +++ b/local/mockgatehub.yaml @@ -2,7 +2,7 @@ services: # MockGatehub - Mock Gatehub API service for local development mockgatehub: container_name: mockgatehub-local - image: ghcr.io/interledger/mockgatehub:1.12.3 + image: ghcr.io/interledger/mockgatehub:1.12.4 ports: - '8080:8080' environment: diff --git a/local/scripts/rafiki-setup.js b/local/scripts/rafiki-setup.js index fe59caa78..fe5c8cc9c 100644 --- a/local/scripts/rafiki-setup.js +++ b/local/scripts/rafiki-setup.js @@ -203,14 +203,14 @@ const depositAssetLiquidityMutation = /* GraphQL */ ` const assetsToEnsure = [ { code: 'USD', scale: 2 }, { code: 'EUR', scale: 2 }, - { code: 'GBP', scale: 2 }, - { code: 'ZAR', scale: 2 }, - { code: 'MXN', scale: 2 }, - { code: 'SGD', scale: 2 }, - { code: 'CAD', scale: 2 }, - { code: 'EGG', scale: 2 }, - { code: 'PEB', scale: 2 }, - { code: 'PKR', scale: 2 } + // { code: 'GBP', scale: 2 }, + // { code: 'ZAR', scale: 2 }, + // { code: 'MXN', scale: 2 }, + // { code: 'SGD', scale: 2 }, + // { code: 'CAD', scale: 2 }, + // { code: 'EGG', scale: 2 }, + // { code: 'PEB', scale: 2 }, + // { code: 'PKR', scale: 2 } ] async function ensureTenant(env) { From 3a68862780b8bbe0e574ccf065f0b25d6226d159 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Sun, 5 Apr 2026 21:23:07 +0200 Subject: [PATCH 12/51] fix: resolved dependency issues and aligned with workspace --- package.json | 4 +- pnpm-lock.yaml | 552 +++++++++++++++++++------------------------------ 2 files changed, 217 insertions(+), 339 deletions(-) diff --git a/package.json b/package.json index 704e2a3ee..16a3cca3a 100644 --- a/package.json +++ b/package.json @@ -37,8 +37,8 @@ "@eslint/compat": "^1.4.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.32.0", - "@typescript-eslint/eslint-plugin": "^7.18.0", - "@typescript-eslint/parser": "^7.18.0", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "@typescript-eslint/parser": "^8.0.0", "concurrently": "^9.2.1", "cross-env": "^7.0.3", "eslint": "^9.32.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 29b1f0f88..91c3e7195 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,11 +18,11 @@ importers: specifier: ^9.32.0 version: 9.32.0 '@typescript-eslint/eslint-plugin': - specifier: ^7.18.0 - version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3) + specifier: ^8.0.0 + version: 8.58.0(@typescript-eslint/parser@8.58.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^7.18.0 - version: 7.18.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3) + specifier: ^8.0.0 + version: 8.58.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3) concurrently: specifier: ^9.2.1 version: 9.2.1 @@ -60,24 +60,6 @@ importers: specifier: ^5.9.3 version: 5.9.3 - e2e: - devDependencies: - '@playwright/test': - specifier: ^1.56.0 - version: 1.58.2 - '@types/node': - specifier: ^20.17.30 - version: 20.17.30 - dotenv: - specifier: ^17.2.3 - version: 17.3.1 - playwright-bdd: - specifier: ^8.0.0 - version: 8.5.0(@playwright/test@1.58.2) - typescript: - specifier: ^5.9.3 - version: 5.9.3 - packages/boutique/backend: dependencies: '@boutique/shared': @@ -918,51 +900,10 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@colors/colors@1.5.0': - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} - '@colors/colors@1.6.0': resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} engines: {node: '>=0.1.90'} - '@cucumber/cucumber-expressions@18.0.1': - resolution: {integrity: sha512-NSid6bI+7UlgMywl5octojY5NXnxR9uq+JisjOrO52VbFsQM6gTWuQFE8syI10KnIBEdPzuEUSVEeZ0VFzRnZA==} - - '@cucumber/gherkin-utils@9.2.0': - resolution: {integrity: sha512-3nmRbG1bUAZP3fAaUBNmqWO0z0OSkykZZotfLjyhc8KWwDSOrOmMJlBTd474lpA8EWh4JFLAX3iXgynBqBvKzw==} - hasBin: true - - '@cucumber/gherkin@31.0.0': - resolution: {integrity: sha512-wlZfdPif7JpBWJdqvHk1Mkr21L5vl4EfxVUOS4JinWGf3FLRV6IKUekBv5bb5VX79fkDcfDvESzcQ8WQc07Wgw==} - - '@cucumber/gherkin@32.2.0': - resolution: {integrity: sha512-X8xuVhSIqlUjxSRifRJ7t0TycVWyX58fygJH3wDNmHINLg9sYEkvQT0SO2G5YlRZnYc11TIFr4YPenscvdlBIw==} - - '@cucumber/html-formatter@21.15.1': - resolution: {integrity: sha512-tjxEpP161sQ7xc3VREc94v1ymwIckR3ySViy7lTvfi1jUpyqy2Hd/p4oE3YT1kQ9fFDvUflPwu5ugK5mA7BQLA==} - peerDependencies: - '@cucumber/messages': '>=18' - - '@cucumber/junit-xml-formatter@0.7.1': - resolution: {integrity: sha512-AzhX+xFE/3zfoYeqkT7DNq68wAQfBcx4Dk9qS/ocXM2v5tBv6eFQ+w8zaSfsktCjYzu4oYRH/jh4USD1CYHfaQ==} - peerDependencies: - '@cucumber/messages': '*' - - '@cucumber/messages@26.0.1': - resolution: {integrity: sha512-DIxSg+ZGariumO+Lq6bn4kOUIUET83A4umrnWmidjGFl8XxkBieUZtsmNbLYgH/gnsmP07EfxxdTr0hOchV1Sg==} - - '@cucumber/messages@27.2.0': - resolution: {integrity: sha512-f2o/HqKHgsqzFLdq6fAhfG1FNOQPdBdyMGpKwhb7hZqg0yZtx9BVqkTyuoNk83Fcvk3wjMVfouFXXHNEk4nddA==} - - '@cucumber/query@13.6.0': - resolution: {integrity: sha512-tiDneuD5MoWsJ9VKPBmQok31mSX9Ybl+U4wqDoXeZgsXHDURqzM3rnpWVV3bC34y9W6vuFxrlwF/m7HdOxwqRw==} - peerDependencies: - '@cucumber/messages': '*' - - '@cucumber/tag-expressions@6.2.0': - resolution: {integrity: sha512-KIF0eLcafHbWOuSDWFw0lMmgJOLdDRWjEL1kfXEWrqHmx2119HxVAr35WuEd9z542d3Yyg+XNqSr+81rIKqEdg==} - '@dabh/diagnostics@2.0.8': resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==} @@ -1154,10 +1095,20 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/regexpp@4.12.1': resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint/compat@1.4.0': resolution: {integrity: sha512-DEzm5dKeDBPm3r08Ixli/0cmxr8LkRdwxMRUIJBlSCpAwSrvFEJpVBzV+66JhDxiaqKxnRzCXhtiMiczF7Hglg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2565,10 +2516,6 @@ packages: '@tanstack/virtual-core@3.13.9': resolution: {integrity: sha512-3jztt0jpaoJO5TARe2WIHC1UQC3VMLAFUW5mmMo0yrkwtDB2AQP0+sh10BVUpWrnvHjSLvzFizydtEGLCJKFoQ==} - '@teppeis/multimaps@3.0.0': - resolution: {integrity: sha512-ID7fosbc50TbT0MK0EG12O+gAP3W3Aa/Pz4DaTtQtEvlc9Odaqi0de+xuZ7Li2GtK4HzEX7IuRWS/JmZLksR3Q==} - engines: {node: '>=14'} - '@tootallnate/once@2.0.0': resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} @@ -2725,63 +2672,64 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/eslint-plugin@7.18.0': - resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/eslint-plugin@8.58.0': + resolution: {integrity: sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/parser': ^8.58.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@7.18.0': - resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/parser@8.58.0': + resolution: {integrity: sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@7.18.0': - resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/project-service@8.58.0': + resolution: {integrity: sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/scope-manager@8.58.0': + resolution: {integrity: sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@7.18.0': - resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/tsconfig-utils@8.58.0': + resolution: {integrity: sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@7.18.0': - resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/type-utils@8.58.0': + resolution: {integrity: sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/typescript-estree@7.18.0': - resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/types@8.58.0': + resolution: {integrity: sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.58.0': + resolution: {integrity: sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@7.18.0': - resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/utils@8.58.0': + resolution: {integrity: sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@7.18.0': - resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/visitor-keys@8.58.0': + resolution: {integrity: sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vitejs/plugin-react-swc@3.11.0': resolution: {integrity: sha512-YTJCGFdNMHCMfjODYtxRNVAYmTWQ1Lb8PulP/2/f/oEEtglw8oKxKIZmmRkyXrVrHfsKOaVkAc3NT9/dMutO5w==} @@ -3053,6 +3001,10 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + bare-events@2.4.2: resolution: {integrity: sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==} @@ -3120,6 +3072,10 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@5.0.5: + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} + engines: {node: 18 || 20 || >=22} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -3261,9 +3217,6 @@ packages: cjs-module-lexer@1.3.1: resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==} - class-transformer@0.5.1: - resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} - class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} @@ -3279,10 +3232,6 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} - cli-table3@0.6.5: - resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} - engines: {node: 10.* || >= 12.*} - cli-truncate@2.1.0: resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} engines: {node: '>=8'} @@ -3367,10 +3316,6 @@ packages: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} - commander@13.1.0: - resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} - engines: {node: '>=18'} - commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -3563,6 +3508,15 @@ packages: supports-color: optional: true + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} @@ -3691,10 +3645,6 @@ packages: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} - dotenv@17.3.1: - resolution: {integrity: sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==} - engines: {node: '>=12'} - drange@1.1.1: resolution: {integrity: sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==} engines: {node: '>=4'} @@ -3879,6 +3829,10 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + eslint@9.32.0: resolution: {integrity: sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4016,6 +3970,15 @@ packages: fbjs@3.0.5: resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + fecha@4.2.3: resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} @@ -4244,9 +4207,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - graphql-config@5.1.2: resolution: {integrity: sha512-kVwUuFz1h9u7B0nDPtnLFWN+x018niaH3zi1ChFCNfbunhDVJ911Z3YcglK5EfDfySeeH+zCa1aGxd1wMgNd7g==} engines: {node: '>= 16.0.0'} @@ -4401,6 +4361,10 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + immutable@3.7.6: resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} engines: {node: '>=0.8.0'} @@ -5009,10 +4973,6 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - luxon@3.7.2: - resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==} - engines: {node: '>=12'} - make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} @@ -5073,18 +5033,10 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - mime-db@1.54.0: - resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} - engines: {node: '>= 0.6'} - mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mime-types@3.0.2: - resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} - engines: {node: '>=18'} - mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} @@ -5098,6 +5050,10 @@ packages: resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} hasBin: true + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -5502,6 +5458,10 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} @@ -5524,13 +5484,6 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - playwright-bdd@8.5.0: - resolution: {integrity: sha512-w/Bd5C1d6Xe5e1oREsbt2rDN0/Mcp+J2OjQwSl49/mroa2K6UZU33P7v91pLQPl1otDitMwJOaOeJsqaj7WU7w==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - '@playwright/test': '>=1.44' - playwright-core@1.58.2: resolution: {integrity: sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==} engines: {node: '>=18'} @@ -5925,9 +5878,6 @@ packages: resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} engines: {node: '>=4'} - reflect-metadata@0.2.2: - resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} - reflect.getprototypeof@1.0.9: resolution: {integrity: sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==} engines: {node: '>= 0.4'} @@ -5935,13 +5885,6 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regexp-match-indices@1.0.2: - resolution: {integrity: sha512-DwZuAkt8NF5mKwGGER1EGh2PRqyvhRhhLviH+R8y8dIuaQROlUfXjt4s9ZTXstIsSkptf06BSvwcEmmfheJJWQ==} - - regexp-tree@0.1.27: - resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} - hasBin: true - regexp.prototype.flags@1.5.3: resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} engines: {node: '>= 0.4'} @@ -6089,6 +6032,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -6217,9 +6165,6 @@ packages: source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - source-map@0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} @@ -6463,6 +6408,10 @@ packages: resolution: {integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==} engines: {node: '>=8'} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + title-case@3.0.3: resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} @@ -6514,11 +6463,11 @@ packages: resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} engines: {node: '>= 14.0.0'} - ts-api-utils@1.4.3: - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} - engines: {node: '>=16'} + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} peerDependencies: - typescript: '>=4.2.0' + typescript: '>=4.8.4' ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -6725,10 +6674,6 @@ packages: resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} hasBin: true - uuid@11.0.5: - resolution: {integrity: sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==} - hasBin: true - uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -6907,10 +6852,6 @@ packages: utf-8-validate: optional: true - xmlbuilder@15.1.1: - resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} - engines: {node: '>=8.0'} - xmlhttprequest-ssl@2.1.1: resolution: {integrity: sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==} engines: {node: '>=0.4.0'} @@ -7412,65 +7353,8 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@colors/colors@1.5.0': - optional: true - '@colors/colors@1.6.0': {} - '@cucumber/cucumber-expressions@18.0.1': - dependencies: - regexp-match-indices: 1.0.2 - - '@cucumber/gherkin-utils@9.2.0': - dependencies: - '@cucumber/gherkin': 31.0.0 - '@cucumber/messages': 27.2.0 - '@teppeis/multimaps': 3.0.0 - commander: 13.1.0 - source-map-support: 0.5.21 - - '@cucumber/gherkin@31.0.0': - dependencies: - '@cucumber/messages': 26.0.1 - - '@cucumber/gherkin@32.2.0': - dependencies: - '@cucumber/messages': 27.2.0 - - '@cucumber/html-formatter@21.15.1(@cucumber/messages@27.2.0)': - dependencies: - '@cucumber/messages': 27.2.0 - - '@cucumber/junit-xml-formatter@0.7.1(@cucumber/messages@27.2.0)': - dependencies: - '@cucumber/messages': 27.2.0 - '@cucumber/query': 13.6.0(@cucumber/messages@27.2.0) - '@teppeis/multimaps': 3.0.0 - luxon: 3.7.2 - xmlbuilder: 15.1.1 - - '@cucumber/messages@26.0.1': - dependencies: - '@types/uuid': 10.0.0 - class-transformer: 0.5.1 - reflect-metadata: 0.2.2 - uuid: 10.0.0 - - '@cucumber/messages@27.2.0': - dependencies: - '@types/uuid': 10.0.0 - class-transformer: 0.5.1 - reflect-metadata: 0.2.2 - uuid: 11.0.5 - - '@cucumber/query@13.6.0(@cucumber/messages@27.2.0)': - dependencies: - '@cucumber/messages': 27.2.0 - '@teppeis/multimaps': 3.0.0 - lodash.sortby: 4.7.0 - - '@cucumber/tag-expressions@6.2.0': {} - '@dabh/diagnostics@2.0.8': dependencies: '@so-ric/colorspace': 1.1.6 @@ -7620,8 +7504,15 @@ snapshots: eslint: 9.32.0(jiti@1.21.7) eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.9.1(eslint@9.32.0(jiti@1.21.7))': + dependencies: + eslint: 9.32.0(jiti@1.21.7) + eslint-visitor-keys: 3.4.3 + '@eslint-community/regexpp@4.12.1': {} + '@eslint-community/regexpp@4.12.2': {} + '@eslint/compat@1.4.0(eslint@9.32.0(jiti@1.21.7))': dependencies: '@eslint/core': 0.16.0 @@ -8651,6 +8542,7 @@ snapshots: '@playwright/test@1.58.2': dependencies: playwright: 1.58.2 + optional: true '@polka/url@1.0.0-next.25': {} @@ -9274,8 +9166,6 @@ snapshots: '@tanstack/virtual-core@3.13.9': {} - '@teppeis/multimaps@3.0.0': {} - '@tootallnate/once@2.0.0': {} '@types/babel__core@7.20.5': @@ -9463,86 +9353,96 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 7.18.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/utils': 7.18.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 7.18.0 + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.58.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/type-utils': 8.58.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/utils': 8.58.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.58.0 eslint: 9.32.0(jiti@1.21.7) - graphemer: 1.4.0 - ignore: 5.3.2 + ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 1.4.3(typescript@5.9.3) - optionalDependencies: + ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.18.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3)': + '@typescript-eslint/parser@8.58.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.6(supports-color@5.5.0) + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.58.0 + debug: 4.4.3 eslint: 9.32.0(jiti@1.21.7) - optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.18.0': + '@typescript-eslint/project-service@8.58.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@5.9.3) + '@typescript-eslint/types': 8.58.0 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color - '@typescript-eslint/type-utils@7.18.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3)': + '@typescript-eslint/scope-manager@8.58.0': dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3) - '@typescript-eslint/utils': 7.18.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3) - debug: 4.3.6(supports-color@5.5.0) + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/visitor-keys': 8.58.0 + + '@typescript-eslint/tsconfig-utils@8.58.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.58.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.58.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3) + debug: 4.4.3 eslint: 9.32.0(jiti@1.21.7) - ts-api-utils: 1.4.3(typescript@5.9.3) - optionalDependencies: + ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@7.18.0': {} + '@typescript-eslint/types@8.58.0': {} - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.58.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.6(supports-color@5.5.0) - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.2 - ts-api-utils: 1.4.3(typescript@5.9.3) - optionalDependencies: + '@typescript-eslint/project-service': 8.58.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@5.9.3) + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/visitor-keys': 8.58.0 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.7.4 + tinyglobby: 0.2.15 + ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3)': + '@typescript-eslint/utils@8.58.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.32.0(jiti@1.21.7)) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.32.0(jiti@1.21.7)) + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.9.3) eslint: 9.32.0(jiti@1.21.7) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - - typescript - '@typescript-eslint/visitor-keys@7.18.0': + '@typescript-eslint/visitor-keys@8.58.0': dependencies: - '@typescript-eslint/types': 7.18.0 - eslint-visitor-keys: 3.4.3 + '@typescript-eslint/types': 8.58.0 + eslint-visitor-keys: 5.0.1 '@vitejs/plugin-react-swc@3.11.0(vite@5.4.20(@types/node@22.13.17))': dependencies: @@ -9907,6 +9807,8 @@ snapshots: balanced-match@1.0.2: {} + balanced-match@4.0.4: {} + bare-events@2.4.2: optional: true @@ -9981,6 +9883,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + brace-expansion@5.0.5: + dependencies: + balanced-match: 4.0.4 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -10156,8 +10062,6 @@ snapshots: cjs-module-lexer@1.3.1: {} - class-transformer@0.5.1: {} - class-variance-authority@0.7.1: dependencies: clsx: 2.1.1 @@ -10170,12 +10074,6 @@ snapshots: cli-spinners@2.9.2: {} - cli-table3@0.6.5: - dependencies: - string-width: 4.2.3 - optionalDependencies: - '@colors/colors': 1.5.0 - cli-truncate@2.1.0: dependencies: slice-ansi: 3.0.0 @@ -10246,8 +10144,6 @@ snapshots: commander@10.0.1: {} - commander@13.1.0: {} - commander@4.1.1: {} commander@7.2.0: {} @@ -10437,6 +10333,10 @@ snapshots: optionalDependencies: supports-color: 5.5.0 + debug@4.4.3: + dependencies: + ms: 2.1.3 + decamelize@1.2.0: {} dedent@1.5.3(babel-plugin-macros@3.1.0): @@ -10548,8 +10448,6 @@ snapshots: dotenv@16.4.5: {} - dotenv@17.3.1: {} - drange@1.1.1: {} dset@3.1.3: {} @@ -10823,6 +10721,8 @@ snapshots: eslint-visitor-keys@4.2.1: {} + eslint-visitor-keys@5.0.1: {} + eslint@9.32.0(jiti@1.21.7): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.32.0(jiti@1.21.7)) @@ -11031,6 +10931,10 @@ snapshots: transitivePeerDependencies: - encoding + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + fecha@4.2.3: {} figures@3.2.0: @@ -11315,8 +11219,6 @@ snapshots: graceful-fs@4.2.11: {} - graphemer@1.4.0: {} - graphql-config@5.1.2(@types/node@20.17.30)(graphql@16.11.0)(typescript@5.9.3): dependencies: '@graphql-tools/graphql-file-loader': 8.0.1(graphql@16.11.0) @@ -11496,6 +11398,8 @@ snapshots: ignore@5.3.2: {} + ignore@7.0.5: {} + immutable@3.7.6: {} import-fresh@3.3.0: @@ -12315,8 +12219,6 @@ snapshots: dependencies: yallist: 3.1.1 - luxon@3.7.2: {} - make-dir@4.0.0: dependencies: semver: 7.7.2 @@ -12359,22 +12261,20 @@ snapshots: mime-db@1.52.0: {} - mime-db@1.54.0: {} - mime-types@2.1.35: dependencies: mime-db: 1.52.0 - mime-types@3.0.2: - dependencies: - mime-db: 1.54.0 - mime@1.6.0: {} mimic-fn@2.1.0: {} mini-svg-data-uri@1.4.4: {} + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.5 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -12784,6 +12684,8 @@ snapshots: picomatch@2.3.1: {} + picomatch@4.0.4: {} + pify@2.3.0: {} pino-abstract-transport@1.2.0: @@ -12813,29 +12715,15 @@ snapshots: dependencies: find-up: 4.1.0 - playwright-bdd@8.5.0(@playwright/test@1.58.2): - dependencies: - '@cucumber/cucumber-expressions': 18.0.1 - '@cucumber/gherkin': 32.2.0 - '@cucumber/gherkin-utils': 9.2.0 - '@cucumber/html-formatter': 21.15.1(@cucumber/messages@27.2.0) - '@cucumber/junit-xml-formatter': 0.7.1(@cucumber/messages@27.2.0) - '@cucumber/messages': 27.2.0 - '@cucumber/tag-expressions': 6.2.0 - '@playwright/test': 1.58.2 - cli-table3: 0.6.5 - commander: 13.1.0 - fast-glob: 3.3.3 - mime-types: 3.0.2 - xmlbuilder: 15.1.1 - - playwright-core@1.58.2: {} + playwright-core@1.58.2: + optional: true playwright@1.58.2: dependencies: playwright-core: 1.58.2 optionalDependencies: fsevents: 2.3.2 + optional: true plimit-lit@1.6.1: dependencies: @@ -13193,8 +13081,6 @@ snapshots: dependencies: redis-errors: 1.2.0 - reflect-metadata@0.2.2: {} - reflect.getprototypeof@1.0.9: dependencies: call-bind: 1.0.8 @@ -13208,12 +13094,6 @@ snapshots: regenerator-runtime@0.14.1: {} - regexp-match-indices@1.0.2: - dependencies: - regexp-tree: 0.1.27 - - regexp-tree@0.1.27: {} - regexp.prototype.flags@1.5.3: dependencies: call-bind: 1.0.8 @@ -13371,6 +13251,8 @@ snapshots: semver@7.7.2: {} + semver@7.7.4: {} + send@0.19.0: dependencies: debug: 2.6.9 @@ -13589,11 +13471,6 @@ snapshots: buffer-from: 1.1.2 source-map: 0.6.1 - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - source-map@0.5.7: {} source-map@0.6.1: {} @@ -13916,6 +13793,11 @@ snapshots: tildify@2.0.0: {} + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + title-case@3.0.3: dependencies: tslib: 2.6.3 @@ -13956,7 +13838,7 @@ snapshots: triple-beam@1.4.1: {} - ts-api-utils@1.4.3(typescript@5.9.3): + ts-api-utils@2.5.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -14144,8 +14026,6 @@ snapshots: uuid@10.0.0: {} - uuid@11.0.5: {} - uuid@8.3.2: {} uuid@9.0.1: {} @@ -14309,8 +14189,6 @@ snapshots: ws@8.18.0: {} - xmlbuilder@15.1.1: {} - xmlhttprequest-ssl@2.1.1: {} xtend@4.0.2: {} From b6a56f69314ace83b656fc9636f820c2c4e73455 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Mon, 6 Apr 2026 13:52:30 +0200 Subject: [PATCH 13/51] refactor: ci now part of local --- .github/copilot-instructions.md | 3 +- README.md | 2 + local/.env.example | 34 ++++++++++++- local/Makefile | 7 ++- local/boutique.yaml | 50 +++++++++++++++++++ local/config/san.cnf | 13 ++--- local/config/traefik/dynamic.yml | 15 ++++++ local/docker-compose.yml | 1 + local/rafiki.yaml | 28 ++++++++--- local/scripts/rafiki-setup.js | 8 ++- local/traefik.yaml | 2 + local/wallet.yaml | 15 +++++- package.json | 16 +++--- packages/boutique/backend/src/app.ts | 3 +- packages/boutique/backend/src/config/env.ts | 30 +++++++---- packages/boutique/backend/src/container.ts | 3 +- .../backend/src/open-payments/service.ts | 14 +++++- .../boutique/frontend/src/lib/constants.ts | 21 +++++++- packages/boutique/frontend/vite.config.ts | 2 + packages/wallet/frontend/src/middleware.ts | 22 ++++++-- 20 files changed, 241 insertions(+), 48 deletions(-) create mode 100644 local/boutique.yaml diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index a03d96841..f00b42702 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -118,7 +118,8 @@ Main run modes: - `pnpm dev` -> hot-reload backend containers + frontend dev servers. - `pnpm dev:debug` -> backend debug mode (`9229`, `9230`). - `pnpm dev:lite` -> run built backend (no hot reload). -- `pnpm localenv:stop` -> stop local docker environment. +- `pnpm local:down` -> stop local docker environment. +- `pnpm local:logs` -> follow container logs. Service endpoints: diff --git a/README.md b/README.md index f04555f5e..2a3cb3520 100644 --- a/README.md +++ b/README.md @@ -123,4 +123,6 @@ Upon executing the above command, the following will be available - Admin at [http://localhost:3012](http://localhost:3012) - Interledger Boutique e-commerce application + - Backend at [http://localhost:3004](http://localhost:3004) - [http://localhost:4004](http://localhost:4004) + - [https://boutique.testnet.test](https://boutique.testnet.test) (via Traefik when boutique frontend dev server is running on port 4004) diff --git a/local/.env.example b/local/.env.example index 37a34e3e7..f7c558c3d 100644 --- a/local/.env.example +++ b/local/.env.example @@ -22,7 +22,6 @@ DEV_MODE=true # NODE_ENV — Standard Node.js environment flag, passed to every service. -# Defaults to "development" in docker-compose.yml when unset. # development (default) — enables error stack traces in API responses, # allows HTTP (not just HTTPS) for internal service # calls, relaxes cookie security (secure=false, @@ -31,7 +30,10 @@ DEV_MODE=true # cookies (secure=true, sameSite=none), and may # disable certain non-production endpoints. # For local development you almost never need to change this. -#NODE_ENV=development +NODE_ENV=development + +# Redis URL used by local services. +REDIS_URL=redis://redis:6379/0 # Wallet Backend secrets and config AUTH_IDENTITY_SERVER_SECRET=dev_identity_server_secret @@ -108,6 +110,9 @@ GATEHUB_CARD_APP_ID=mock-card-app-id # GATEHUB_CARD_APP_ID= # Wallet backend rate limits and product codes (optional) +WALLET_BACKEND_OPEN_PAYMENTS_HOST=https://rafiki-backend.testnet.test +# Allow local self-signed TLS for wallet-backend calls to *.testnet.test. +WALLET_NODE_TLS_REJECT_UNAUTHORIZED=0 RATE_LIMIT=false RATE_LIMIT_LEVEL=LAX GATEHUB_ACCOUNT_PRODUCT_CODE=DEFAULT @@ -115,6 +120,15 @@ GATEHUB_CARD_PRODUCT_CODE=DEFAULT GATEHUB_NAME_ON_CARD=TEST USER GATEHUB_CARD_PP_PREFIX=ILF +# Boutique backend configuration (required) +BOUTIQUE_BACKEND_PORT=3004 +BOUTIQUE_BACKEND_DEBUG_PORT=9230 +BOUTIQUE_BACKEND_FRONTEND_URL=https://boutique.testnet.test +BOUTIQUE_BACKEND_DATABASE_URL=postgres://boutique_backend:boutique_backend@postgres-local/boutique_backend +BOUTIQUE_REDIS_URL=redis://redis:6379/0 +# Allow local self-signed TLS for Open Payments calls from boutique-backend container. +BOUTIQUE_NODE_TLS_REJECT_UNAUTHORIZED=0 + # Card service links (only used when cards are enabled) CARD_DATA_HREF=http://rafiki-card-service:3007/card-data CARD_PIN_HREF=http://rafiki-card-service:3007/card-pin @@ -129,6 +143,22 @@ OPERATOR_TENANT_ID=f829c064-762a-4430-ac5d-7af5df198551 ADMIN_API_SECRET=secret-key RAFIKI_SIGNATURE_SECRET=327132b5-99e9-4eb8-8a25-2b7d7738ece1 +# Rafiki public URL defaults for local wallet-address generation +RAFIKI_BACKEND_OPEN_PAYMENTS_URL=https://rafiki-backend.testnet.test +RAFIKI_BACKEND_WALLET_ADDRESS_URL=https://rafiki-backend.testnet.test/.well-known/pay +RAFIKI_FRONTEND_OPEN_PAYMENTS_URL=https://rafiki-backend.testnet.test/ +RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL=https://auth.testnet.test +RAFIKI_AUTH_TRUST_PROXY=true +RAFIKI_BACKEND_TRUST_PROXY=true +# Allow local self-signed TLS for rafiki-auth when fetching wallet-address jwks from *.testnet.test. +RAFIKI_AUTH_NODE_TLS_REJECT_UNAUTHORIZED=0 + +# Boutique Open Payments credentials (required) +# Set these values explicitly for boutique backend. +BOUTIQUE_PAYMENT_POINTER= +BOUTIQUE_KEY_ID= +BOUTIQUE_PRIVATE_KEY= + # Wallet Frontend public envs NEXT_PUBLIC_BACKEND_URL=http://localhost:3003 NEXT_PUBLIC_AUTH_HOST=http://localhost:3006 diff --git a/local/Makefile b/local/Makefile index d367ac656..9a5d09906 100644 --- a/local/Makefile +++ b/local/Makefile @@ -26,8 +26,12 @@ all: certs @echo "Please open these ALL of these URLs in your browser and accept the self-signed certificates:" @echo " - https://mockgatehub.testnet.test/health" @echo " - https://api.testnet.test/health" + @echo " - https://api.boutique.testnet.test/products" @echo " - https://rafiki-frontend.testnet.test" + @echo " - https://rafiki-backend.testnet.test/healthz" + @echo " - https://auth.testnet.test/healthz" @echo " - https://testnet.test" + @echo " - https://boutique.testnet.test" build: $(COMPOSE) build @@ -93,9 +97,10 @@ trust-linux: certs HOSTS := testnet.test \ api.testnet.test \ auth.testnet.test \ - rafiki-auth.testnet.test \ rafiki-backend.testnet.test \ rafiki-frontend.testnet.test \ + boutique.testnet.test \ + api.boutique.testnet.test \ rafiki-card-service.testnet.test \ mockgatehub.testnet.test diff --git a/local/boutique.yaml b/local/boutique.yaml new file mode 100644 index 000000000..1b3cfc18e --- /dev/null +++ b/local/boutique.yaml @@ -0,0 +1,50 @@ +services: + # Boutique + boutique-backend: + container_name: boutique-backend-local + build: + context: ../ + args: + DEV_MODE: ${DEV_MODE:-true} + dockerfile: ./packages/boutique/backend/Dockerfile.dev + depends_on: + - postgres + - rafiki-backend + - redis + volumes: + - ../packages/boutique/backend:/home/testnet/packages/boutique/backend + - ../packages/boutique/shared:/home/testnet/packages/boutique/shared + environment: + NODE_ENV: ${NODE_ENV:-development} + NODE_TLS_REJECT_UNAUTHORIZED: ${BOUTIQUE_NODE_TLS_REJECT_UNAUTHORIZED:-0} + PORT: ${BOUTIQUE_BACKEND_PORT:-3004} + DEBUG_PORT: ${BOUTIQUE_BACKEND_DEBUG_PORT:-9230} + FRONTEND_URL: ${BOUTIQUE_BACKEND_FRONTEND_URL:-https://boutique.testnet.test} + DATABASE_URL: ${BOUTIQUE_BACKEND_DATABASE_URL:-postgres://boutique_backend:boutique_backend@postgres-local/boutique_backend} + PAYMENT_POINTER: ${BOUTIQUE_PAYMENT_POINTER:-replace-me} + KEY_ID: ${BOUTIQUE_KEY_ID:-replace-me} + PRIVATE_KEY: ${BOUTIQUE_PRIVATE_KEY:-replace-me} + REDIS_URL: ${BOUTIQUE_REDIS_URL:-redis://redis:6379/4} + extra_hosts: + - testnet.test:host-gateway + - api.testnet.test:host-gateway + - auth.testnet.test:host-gateway + - rafiki-backend.testnet.test:host-gateway + - rafiki-frontend.testnet.test:host-gateway + - rafiki-card-service.testnet.test:host-gateway + - mockgatehub.testnet.test:host-gateway + - boutique.testnet.test:host-gateway + - api.boutique.testnet.test:host-gateway + restart: always + networks: + - testnet + ports: + - '3004:3004' + - '9230:9230' + labels: + - traefik.enable=true + - traefik.docker.network=testnet + - traefik.http.routers.boutique-backend.rule=Host(`api.boutique.testnet.test`) + - traefik.http.routers.boutique-backend.entrypoints=websecure + - traefik.http.routers.boutique-backend.tls=true + - traefik.http.services.boutique-backend.loadbalancer.server.port=3004 diff --git a/local/config/san.cnf b/local/config/san.cnf index a41ae05b0..c4684357f 100644 --- a/local/config/san.cnf +++ b/local/config/san.cnf @@ -17,10 +17,11 @@ subjectAltName = @alt_names DNS.1 = testnet.test DNS.2 = api.testnet.test DNS.3 = auth.testnet.test -DNS.4 = rafiki-auth.testnet.test -DNS.5 = rafiki-backend.testnet.test -DNS.6 = rafiki-frontend.testnet.test -DNS.7 = rafiki-card-service.testnet.test -DNS.8 = mockgatehub.testnet.test -DNS.9 = localhost +DNS.4 = rafiki-backend.testnet.test +DNS.5 = rafiki-frontend.testnet.test +DNS.6 = rafiki-card-service.testnet.test +DNS.7 = mockgatehub.testnet.test +DNS.8 = boutique.testnet.test +DNS.9 = api.boutique.testnet.test +DNS.10 = localhost IP.1 = 127.0.0.1 \ No newline at end of file diff --git a/local/config/traefik/dynamic.yml b/local/config/traefik/dynamic.yml index 2dfb690af..22804286e 100644 --- a/local/config/traefik/dynamic.yml +++ b/local/config/traefik/dynamic.yml @@ -4,3 +4,18 @@ tls: defaultCertificate: certFile: /certs/local.crt keyFile: /certs/local.key + +http: + routers: + boutique-frontend: + rule: Host(`boutique.testnet.test`) + entryPoints: + - websecure + tls: true + service: boutique-frontend + + services: + boutique-frontend: + loadBalancer: + servers: + - url: http://host.docker.internal:4004 diff --git a/local/docker-compose.yml b/local/docker-compose.yml index 5fcac4608..d20e1f8d5 100644 --- a/local/docker-compose.yml +++ b/local/docker-compose.yml @@ -5,6 +5,7 @@ include: - mockgatehub.yaml - rafiki.yaml - wallet.yaml + - boutique.yaml - mailslurper.yaml networks: diff --git a/local/rafiki.yaml b/local/rafiki.yaml index 55615eedf..887a3a411 100644 --- a/local/rafiki.yaml +++ b/local/rafiki.yaml @@ -14,9 +14,12 @@ services: INTROSPECTION_PORT: ${RAFIKI_AUTH_INTROSPECTION_PORT:-3007} ADMIN_PORT: ${RAFIKI_AUTH_ADMIN_PORT:-3008} NODE_ENV: ${NODE_ENV:-development} - AUTH_SERVER_URL: ${RAFIKI_AUTH_SERVER_URL:-http://rafiki-auth:3006} + LOG_LEVEL: ${RAFIKI_AUTH_LOG_LEVEL:-debug} + TRUST_PROXY: ${RAFIKI_AUTH_TRUST_PROXY:-true} + NODE_TLS_REJECT_UNAUTHORIZED: ${RAFIKI_AUTH_NODE_TLS_REJECT_UNAUTHORIZED:-0} + AUTH_SERVER_URL: ${RAFIKI_AUTH_SERVER_URL:-https://auth.testnet.test} AUTH_DATABASE_URL: ${RAFIKI_AUTH_DATABASE_URL:-postgresql://rafiki_auth:rafiki_auth@postgres-local/rafiki_auth} - IDENTITY_SERVER_URL: ${RAFIKI_AUTH_IDENTITY_SERVER_URL:-http://wallet-frontend:4003/grant-interactions} + IDENTITY_SERVER_URL: ${RAFIKI_AUTH_IDENTITY_SERVER_URL:-https://testnet.test/grant-interactions} IDENTITY_SERVER_SECRET: ${AUTH_IDENTITY_SERVER_SECRET:-auth-secret-key-12345} COOKIE_KEY: ${AUTH_COOKIE_KEY:-8fd398393c47dd27a3167d9c081c094f} INTERACTION_COOKIE_SAME_SITE: ${AUTH_INTERACTION_COOKIE_SAME_SITE:-lax} @@ -25,12 +28,22 @@ services: OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} ADMIN_API_SECRET: ${ADMIN_API_SECRET:-secret-key} ADMIN_SIGNATURE_VERSION: ${ADMIN_SIGNATURE_VERSION:-1} + extra_hosts: + - testnet.test:host-gateway + - api.testnet.test:host-gateway + - auth.testnet.test:host-gateway + - rafiki-backend.testnet.test:host-gateway + - rafiki-frontend.testnet.test:host-gateway + - rafiki-card-service.testnet.test:host-gateway + - mockgatehub.testnet.test:host-gateway + - boutique.testnet.test:host-gateway + - api.boutique.testnet.test:host-gateway depends_on: - postgres labels: - traefik.enable=true - traefik.docker.network=testnet - - traefik.http.routers.rafiki-auth.rule=Host(`auth.testnet.test`) || Host(`rafiki-auth.testnet.test`) + - traefik.http.routers.rafiki-auth.rule=Host(`auth.testnet.test`) - traefik.http.routers.rafiki-auth.entrypoints=websecure - traefik.http.routers.rafiki-auth.tls=true - traefik.http.services.rafiki-auth.loadbalancer.server.port=3006 @@ -52,21 +65,22 @@ services: environment: NODE_ENV: ${NODE_ENV:-development} LOG_LEVEL: ${LOG_LEVEL:-debug} + TRUST_PROXY: ${RAFIKI_BACKEND_TRUST_PROXY:-true} ADMIN_PORT: ${RAFIKI_BACKEND_ADMIN_PORT:-3001} CONNECTOR_PORT: ${RAFIKI_BACKEND_CONNECTOR_PORT:-3002} OPEN_PAYMENTS_PORT: ${RAFIKI_BACKEND_OPEN_PAYMENTS_PORT:-80} DATABASE_URL: ${RAFIKI_BACKEND_DATABASE_URL:-postgresql://rafiki_backend:rafiki_backend@postgres-local/rafiki_backend} USE_TIGERBEETLE: ${RAFIKI_BACKEND_USE_TIGERBEETLE:-false} NONCE_REDIS_KEY: ${RAFIKI_BACKEND_NONCE_REDIS_KEY:-test} - AUTH_SERVER_GRANT_URL: ${RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL:-http://rafiki-auth:3006} + AUTH_SERVER_GRANT_URL: ${RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL:-https://auth.testnet.test} AUTH_SERVER_INTROSPECTION_URL: ${RAFIKI_BACKEND_AUTH_SERVER_INTROSPECTION_URL:-http://rafiki-auth:3007} ILP_ADDRESS: ${RAFIKI_BACKEND_ILP_ADDRESS:-test.net} ILP_CONNECTOR_URL: ${RAFIKI_BACKEND_ILP_CONNECTOR_URL:-http://127.0.0.1:3002} STREAM_SECRET: ${RAFIKI_BACKEND_STREAM_SECRET:-BjPXtnd00G2mRQwP/8ZpwyZASOch5sUXT5o0iR5b5wU=} ADMIN_KEY: ${RAFIKI_BACKEND_ADMIN_KEY:-admin} - OPEN_PAYMENTS_URL: ${RAFIKI_BACKEND_OPEN_PAYMENTS_URL:-https://rafiki-backend} + OPEN_PAYMENTS_URL: ${RAFIKI_BACKEND_OPEN_PAYMENTS_URL:-https://rafiki-backend.testnet.test} REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} - WALLET_ADDRESS_URL: ${RAFIKI_BACKEND_WALLET_ADDRESS_URL:-https://rafiki-backend/.well-known/pay} + WALLET_ADDRESS_URL: ${RAFIKI_BACKEND_WALLET_ADDRESS_URL:-https://rafiki-backend.testnet.test/.well-known/pay} WEBHOOK_URL: ${RAFIKI_BACKEND_WEBHOOK_URL:-http://wallet-backend:3003/webhooks} WEBHOOK_TIMEOUT: ${RAFIKI_BACKEND_WEBHOOK_TIMEOUT:-60000} SIGNATURE_SECRET: ${RAFIKI_SIGNATURE_SECRET:-327132b5-99e9-4eb8-8a25-2b7d7738ece1} @@ -110,7 +124,7 @@ services: environment: PORT: ${RAFIKI_FRONTEND_PORT:-3012} GRAPHQL_URL: ${GRAPHQL_URL:-http://rafiki-backend:3001/graphql} - OPEN_PAYMENTS_URL: ${RAFIKI_FRONTEND_OPEN_PAYMENTS_URL:-https://rafiki-backend/} + OPEN_PAYMENTS_URL: ${RAFIKI_FRONTEND_OPEN_PAYMENTS_URL:-https://rafiki-backend.testnet.test/} ENABLE_INSECURE_MESSAGE_COOKIE: ${RAFIKI_FRONTEND_ENABLE_INSECURE_MESSAGE_COOKIE:-true} AUTH_ENABLED: ${RAFIKI_FRONTEND_AUTH_ENABLED:-false} SIGNATURE_VERSION: ${RAFIKI_FRONTEND_SIGNATURE_VERSION:-1} diff --git a/local/scripts/rafiki-setup.js b/local/scripts/rafiki-setup.js index fe5c8cc9c..4f1e7d3ac 100644 --- a/local/scripts/rafiki-setup.js +++ b/local/scripts/rafiki-setup.js @@ -74,7 +74,7 @@ function buildEnv() { ), IDP_CONSENT_URL: get( 'IDP_CONSENT_URL', - 'http://wallet-frontend:4003/grant-interactions' + 'https://testnet.test/grant-interactions' ) } } @@ -223,7 +223,11 @@ async function ensureTenant(env) { console.log( `Tenant already present: ${existing.tenant.id} (consent URL ${existing.tenant.idpConsentUrl})` ) - if (!existing.tenant.idpConsentUrl || !existing.tenant.idpSecret) { + if ( + !existing.tenant.idpConsentUrl || + !existing.tenant.idpSecret || + existing.tenant.idpConsentUrl !== env.IDP_CONSENT_URL + ) { console.log('Updating tenant idp fields...') await graphqlRequest( { diff --git a/local/traefik.yaml b/local/traefik.yaml index 8326a0204..10c060269 100644 --- a/local/traefik.yaml +++ b/local/traefik.yaml @@ -20,6 +20,8 @@ services: - /var/run/docker.sock:/var/run/docker.sock:ro - ./config/certs:/certs:ro - ./config/traefik/dynamic.yml:/etc/traefik/dynamic/dynamic.yml:ro + extra_hosts: + - host.docker.internal:host-gateway restart: unless-stopped networks: - testnet diff --git a/local/wallet.yaml b/local/wallet.yaml index ed92dec1f..c02ce5376 100644 --- a/local/wallet.yaml +++ b/local/wallet.yaml @@ -17,17 +17,18 @@ services: - ../packages/wallet/shared:/home/testnet/packages/wallet/shared environment: NODE_ENV: ${NODE_ENV:-development} + NODE_TLS_REJECT_UNAUTHORIZED: ${WALLET_NODE_TLS_REJECT_UNAUTHORIZED:-0} PORT: ${WALLET_BACKEND_PORT:-3003} DEBUG_PORT: ${WALLET_BACKEND_DEBUG_PORT:-9229} DATABASE_URL: ${WALLET_BACKEND_DATABASE_URL:-postgres://wallet_backend:wallet_backend@postgres-local/wallet_backend} COOKIE_NAME: ${WALLET_BACKEND_COOKIE_NAME:-testnet.cookie} COOKIE_PASSWORD: ${WALLET_BACKEND_COOKIE_PASSWORD:-testnet.cookie.password.super.secret.ilp} COOKIE_TTL: ${WALLET_BACKEND_COOKIE_TTL:-2630000} - OPEN_PAYMENTS_HOST: ${WALLET_BACKEND_OPEN_PAYMENTS_HOST:-https://rafiki-backend} + OPEN_PAYMENTS_HOST: ${WALLET_BACKEND_OPEN_PAYMENTS_HOST:-https://rafiki-backend.testnet.test} RAFIKI_MONEY_FRONTEND_HOST: ${RAFIKI_MONEY_FRONTEND_HOST:-testnet.test} GRAPHQL_ENDPOINT: ${WALLET_BACKEND_GRAPHQL_ENDPOINT:-http://rafiki-backend:3001/graphql} AUTH_GRAPHQL_ENDPOINT: ${WALLET_BACKEND_AUTH_GRAPHQL_ENDPOINT:-http://rafiki-auth:3008/graphql} - AUTH_DOMAIN: ${WALLET_BACKEND_AUTH_DOMAIN:-http://rafiki-auth:3006} + AUTH_DOMAIN: ${WALLET_BACKEND_AUTH_DOMAIN:-http://rafiki-auth:3009} AUTH_IDENTITY_SERVER_SECRET: ${AUTH_IDENTITY_SERVER_SECRET:-auth-secret-key-12345} RAFIKI_WEBHOOK_SIGNATURE_SECRET: ${RAFIKI_SIGNATURE_SECRET:-327132b5-99e9-4eb8-8a25-2b7d7738ece1} SENDGRID_API_KEY: ${SENDGRID_API_KEY:-} @@ -61,6 +62,16 @@ services: ADMIN_API_SECRET: ${ADMIN_API_SECRET:-secret-key} ADMIN_SIGNATURE_VERSION: ${ADMIN_SIGNATURE_VERSION:-1} WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET:-6d6f636b5f776562686f6f6b5f736563726574} + extra_hosts: + - testnet.test:host-gateway + - api.testnet.test:host-gateway + - auth.testnet.test:host-gateway + - rafiki-backend.testnet.test:host-gateway + - rafiki-frontend.testnet.test:host-gateway + - rafiki-card-service.testnet.test:host-gateway + - mockgatehub.testnet.test:host-gateway + - boutique.testnet.test:host-gateway + - api.boutique.testnet.test:host-gateway restart: always networks: - testnet diff --git a/package.json b/package.json index 16a3cca3a..c65d2ea8b 100644 --- a/package.json +++ b/package.json @@ -16,17 +16,19 @@ "clean": "pnpm clean:modules && pnpm clean:builds", "clean:builds": "find . \\( -name \"dist\" -o -name \".next\" \\) -type d -prune -exec rm -rf '{}' +", "clean:modules": "find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +", - "dev": "pnpm localenv:start && concurrently -n \"WALLET,BOUTIQUE\" -c blue.bold,red.bold \"pnpm wallet:frontend dev\" \"pnpm boutique:frontend dev\"", - "dev:debug": "pnpm localenv:start:debug && concurrently -n \"WALLET,BOUTIQUE\" -c blue.bold,red.bold \"pnpm wallet:frontend dev\" \"pnpm boutique:frontend dev\"", - "dev:lite": "pnpm localenv:start:lite && concurrently -n \"WALLET,BOUTIQUE\" -c blue.bold,red.bold \"pnpm wallet:frontend dev\" \"pnpm boutique:frontend dev\"", + "dev": "pnpm local:up && concurrently -n \"WALLET,BOUTIQUE\" -c blue.bold,red.bold \"pnpm wallet:frontend dev\" \"pnpm boutique:frontend dev\"", + "dev:debug": "pnpm local:up:debug && concurrently -n \"WALLET,BOUTIQUE\" -c blue.bold,red.bold \"pnpm wallet:frontend dev\" \"pnpm boutique:frontend dev\"", + "dev:lite": "pnpm local:up:lite && concurrently -n \"WALLET,BOUTIQUE\" -c blue.bold,red.bold \"pnpm wallet:frontend dev\" \"pnpm boutique:frontend dev\"", "format": "pnpm prettier:write && pnpm lint:fix", "lint:check": "eslint --max-warnings=0 .", "lint:fix": "eslint --max-warnings=0 --fix .", "compose": "docker compose -f ./local/docker-compose.yml", - "localenv:start": "cross-env DEV_MODE=hot-reload pnpm compose up -d --build", - "localenv:start:debug": "cross-env DEV_MODE=debug pnpm compose up -d --build", - "localenv:start:lite": "cross-env DEV_MODE=lite pnpm compose up -d --build", - "localenv:stop": "pnpm compose down", + "local:up": "pnpm compose up -d --build", + "local:up:debug": "cross-env DEV_MODE=debug pnpm compose up -d --build", + "local:up:lite": "cross-env DEV_MODE=lite pnpm compose up -d --build", + "local:down": "pnpm compose down", + "local:logs": "pnpm compose logs -f", + "local:rafiki-assets": "make -C ./local rafiki-assets", "preinstall": "npx only-allow pnpm", "prettier:write": "prettier --config \".prettierrc.js\" --write .", "prettier:check": "prettier --config \".prettierrc.js\" --check .", diff --git a/packages/boutique/backend/src/app.ts b/packages/boutique/backend/src/app.ts index 20231266f..2e142c991 100644 --- a/packages/boutique/backend/src/app.ts +++ b/packages/boutique/backend/src/app.ts @@ -49,10 +49,11 @@ export class App { const logger = this.container.resolve('logger') const productController = this.container.resolve('productController') const orderController = this.container.resolve('orderController') + const frontendOrigin = new URL(env.FRONTEND_URL).origin app.use( cors({ - origin: [env.FRONTEND_URL], + origin: [frontendOrigin], credentials: true }) ) diff --git a/packages/boutique/backend/src/config/env.ts b/packages/boutique/backend/src/config/env.ts index 1ad41b325..e53bbe147 100644 --- a/packages/boutique/backend/src/config/env.ts +++ b/packages/boutique/backend/src/config/env.ts @@ -1,16 +1,26 @@ import { z } from 'zod' +const requiredString = z.string().trim().min(1) +const nonPlaceholderString = requiredString.refine( + (value) => value !== 'replace-me', + { + message: 'Environment variable must be configured with a non-placeholder value' + } +) + const envSchema = z.object({ - PORT: z.coerce.number().default(3004), - NODE_ENV: z.string().default('development'), - FRONTEND_URL: z.string().default('http://localhost:4004'), - DATABASE_URL: z - .string() - .default('postgres://postgres:password@localhost:5433/boutique_backend'), - PAYMENT_POINTER: z.string().default('replace-me'), - KEY_ID: z.string().default('replace-me'), - PRIVATE_KEY: z.string().default('replace-me'), - REDIS_URL: z.string().default('redis://redis:6379/0') + PORT: z.coerce.number(), + NODE_ENV: z.string().min(1), + FRONTEND_URL: z.string().url(), + DATABASE_URL: z.string().url(), + PAYMENT_POINTER: nonPlaceholderString, + KEY_ID: nonPlaceholderString, + PRIVATE_KEY: nonPlaceholderString, + REDIS_URL: z.string().url(), + OPEN_PAYMENTS_USE_HTTP: z + .enum(['true', 'false']) + .default('false') + .transform((v) => v === 'true') }) export type Env = z.infer diff --git a/packages/boutique/backend/src/container.ts b/packages/boutique/backend/src/container.ts index 81e766ac8..5a3b3990d 100644 --- a/packages/boutique/backend/src/container.ts +++ b/packages/boutique/backend/src/container.ts @@ -50,12 +50,11 @@ export async function createContainer( }) const logger = generateLogger(env) - const client = await createAuthenticatedClient({ keyId: env.KEY_ID, privateKey: Buffer.from(env.PRIVATE_KEY, 'base64'), walletAddressUrl: env.PAYMENT_POINTER, - useHttp: env.NODE_ENV === 'development' + useHttp: env.OPEN_PAYMENTS_USE_HTTP }) container.register({ diff --git a/packages/boutique/backend/src/open-payments/service.ts b/packages/boutique/backend/src/open-payments/service.ts index 40fee3682..9dde1e00b 100644 --- a/packages/boutique/backend/src/open-payments/service.ts +++ b/packages/boutique/backend/src/open-payments/service.ts @@ -423,6 +423,10 @@ export class OpenPayments implements IOpenPayments { finishUrl ?? `${this.env.FRONTEND_URL}/checkout/confirmation?orderId=${identifier}` + this.logger.debug( + `[DEBUG-GRANT] createOutgoingPaymentGrant: authServer=${authServer}, walletAddress=${walletAddress}, identifier=${identifier}, finishUrl=${finish}` + ) + const grant = await this.opClient.grant .request( { url: authServer }, @@ -447,8 +451,12 @@ export class OpenPayments implements IOpenPayments { } } ) - .catch(() => { + .catch((err: unknown) => { this.logger.error('Could not retrieve outgoing payment grant.') + this.logger.error(`[DEBUG-GRANT] Grant request error: ${err instanceof Error ? err.message : String(err)}`) + if (err instanceof Error && 'status' in err) { + this.logger.error(`[DEBUG-GRANT] HTTP status: ${(err as { status: number }).status}`) + } throw new InternalServerError() }) @@ -485,12 +493,14 @@ export class OpenPayments implements IOpenPayments { } private async getWalletAddress(url: string) { + this.logger.debug(`[DEBUG-GRANT] getWalletAddress: fetching ${url}`) const walletAddress = await this.opClient.walletAddress .get({ url }) - .catch(() => { + .catch((err: unknown) => { this.logger.error(`Could not fetch wallet address "${url}".`) + this.logger.error(`[DEBUG-GRANT] walletAddress fetch error: ${err instanceof Error ? err.message : String(err)}`) throw new BadRequest('Invalid wallet address.') }) diff --git a/packages/boutique/frontend/src/lib/constants.ts b/packages/boutique/frontend/src/lib/constants.ts index 3f29ef742..c47d7fc23 100644 --- a/packages/boutique/frontend/src/lib/constants.ts +++ b/packages/boutique/frontend/src/lib/constants.ts @@ -1,4 +1,23 @@ +// Resolve the boutique API base URL at runtime based on the current hostname. +// In the local Docker environment the frontend is served behind Traefik at +// "boutique.testnet.test", so we route API calls to its TLS-proxied backend. +// Outside that environment (plain localhost dev) we fall back to the default +// local backend port. +const getDefaultApiBaseUrl = () => { + if (typeof window !== 'undefined') { + if (window.location.hostname === 'boutique.testnet.test') { + return 'https://api.boutique.testnet.test' + } + } + + console.warn( + 'Boutique API: falling back to http://localhost:3004. ' + + 'Set VITE_API_BASE_URL or access via boutique.testnet.test for the Docker environment.' + ) + return 'http://localhost:3004' +} + export const API_BASE_URL = - import.meta.env.VITE_API_BASE_URL || 'http://localhost:3004' + import.meta.env.VITE_API_BASE_URL || getDefaultApiBaseUrl() export const IMAGES_URL = API_BASE_URL + '/images/' export const THEME = import.meta.env.THEME || 'light' diff --git a/packages/boutique/frontend/vite.config.ts b/packages/boutique/frontend/vite.config.ts index 301d56ba4..dee0ae557 100644 --- a/packages/boutique/frontend/vite.config.ts +++ b/packages/boutique/frontend/vite.config.ts @@ -17,6 +17,8 @@ export default defineConfig({ } ], server: { + host: '0.0.0.0', + allowedHosts: ['boutique.testnet.test'], port: 4004 }, resolve: { diff --git a/packages/wallet/frontend/src/middleware.ts b/packages/wallet/frontend/src/middleware.ts index c9a9c9b70..c783664e6 100644 --- a/packages/wallet/frontend/src/middleware.ts +++ b/packages/wallet/frontend/src/middleware.ts @@ -12,10 +12,24 @@ const isPublicPath = (path: string) => { const publicPaths = ['/auth*'] +// When running behind a reverse proxy (e.g. Traefik), Next.js middleware sees +// the internal container URL (http://wallet-frontend:4003) as req.url. This +// causes redirects to point to the internal hostname instead of the public +// domain. We use the standard proxy headers to reconstruct the external origin. +function getExternalBaseUrl(req: NextRequest): string { + const proto = req.headers.get('x-forwarded-proto') + const host = req.headers.get('x-forwarded-host') + if (proto && host) { + return `${proto}://${host}` + } + return req.url +} + export async function middleware(req: NextRequest) { const callbackUrl = req.nextUrl.searchParams.get('callbackUrl') const isPublic = isPublicPath(req.nextUrl.pathname) const cookieName = process.env.COOKIE_NAME || 'testnet.cookie' + const baseUrl = getExternalBaseUrl(req) const cookieVal = req.cookies.get(cookieName)?.value @@ -38,7 +52,7 @@ export async function middleware(req: NextRequest) { response.result.needsIDProof === true && req.nextUrl.pathname !== '/kyc' ) { - const url = new URL('/kyc', req.url) + const url = new URL('/kyc', baseUrl) return NextResponse.redirect(url) } @@ -48,7 +62,7 @@ export async function middleware(req: NextRequest) { response.result.needsIDProof === false && req.nextUrl.pathname.startsWith('/kyc') ) { - return NextResponse.redirect(new URL('/', req.url)) + return NextResponse.redirect(new URL('/', baseUrl)) } if (isPublic) { @@ -58,14 +72,14 @@ export async function middleware(req: NextRequest) { !callbackUrl.startsWith('//') ? callbackUrl : '/' - return NextResponse.redirect(new URL(dest, req.url)) + return NextResponse.redirect(new URL(dest, baseUrl)) } } else { // If the user is not logged in and tries to access a private resource, // redirect to auth page or in the case of grant-interaction, back to the interaction page. if (!isPublic && !response.success) { - const url = new URL(`/auth/login/`, req.url) + const url = new URL(`/auth/login/`, baseUrl) if (req.nextUrl.pathname !== '') { url.searchParams.set( 'callbackUrl', From 9fc41314e77329611912fcbb5c534bd0491aa0a2 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Mon, 6 Apr 2026 14:20:01 +0200 Subject: [PATCH 14/51] ci: removal of makefiles --- README.md | 41 ++++++++- local/Makefile | 109 ------------------------ local/scripts/local-tools.sh | 161 +++++++++++++++++++++++++++++++++++ package.json | 13 ++- 4 files changed, 212 insertions(+), 112 deletions(-) delete mode 100644 local/Makefile create mode 100644 local/scripts/local-tools.sh diff --git a/README.md b/README.md index 2a3cb3520..474c0a809 100644 --- a/README.md +++ b/README.md @@ -80,10 +80,10 @@ In order for the Test Wallet and Test e-commerce playground to function, it is n Navigate to the project's root directory and enter the following command: ```sh -cp ./docker/dev/.env.example ./docker/dev/.env +cp ./local/.env.example ./local/.env ``` -Using your preferred text editor, open the `./docker/dev/.env` file and configure the necessary environment variables. +Using your preferred text editor, open the `./local/.env` file and configure the necessary environment variables. The `GATEHUB` related environment variables are necessary in order to complete Sandbox KYC, and add play money to your account. In order to have the correct variables, create a `GateHub` Sandbox account. Optionally you could send an email to `timea@interledger.foundation` and request these variables. To create a new Interledger Test Wallet account, a verification email will be sent to the provided email address. If you want to send emails within the development environment, you will need to have a personal Sendgrid account and update the following environment variables: `SEND_EMAIL` to `true`, `SENDGRID_API_KEY` and `FROM_EMAIL`. If you prefer not to send emails in the development environment, simply set `SEND_EMAIL` to `false` and use the verification link found in the Docker `wallet-backend` container logs to finalize the registration process for a new user. @@ -97,6 +97,43 @@ If you would like to set up e-commerce application, you will need to create a US ### Local Playground +For a quick command list: + +```sh +pnpm local:help +``` + +Recommended first-run startup order: + +```sh +pnpm local:build # build the local Docker images first +pnpm local:hosts # add the local testnet hostnames to /etc/hosts +pnpm local:trust # trust the generated local TLS certificate +pnpm local:all # start the full local stack with Traefik enabled +pnpm local:rafiki-assets # set up the Rafiki assets after the stack is up +``` + +Notes: +- `pnpm local:hosts` and `pnpm local:trust` require `sudo` on most systems. +- If certs already exist, `pnpm local:trust` reuses them. + +Common local infrastructure commands: + +```sh +pnpm local:all # start full local stack (with Traefik) and print cert acceptance URLs +pnpm local:build # build docker images for local stack +pnpm local:rebuild # force rebuild docker images (no cache) +pnpm local:down # stop the local stack +pnpm local:reset # stop stack and remove docker volumes +pnpm local:logs # follow docker logs +pnpm local:certs # create TLS certs if missing (use FORCE_CERTS=1 to regenerate) +pnpm local:hosts # add host aliases to /etc/hosts (requires sudo) +pnpm local:trust # trust local TLS cert (auto-detect OS) +pnpm local:trust:linux # trust local TLS cert on Linux +pnpm local:trust:macos # trust local TLS cert on macOS +pnpm local:rafiki-assets # run Rafiki asset setup script +``` + Navigate to the project's root directory and execute: ```sh diff --git a/local/Makefile b/local/Makefile deleted file mode 100644 index 9a5d09906..000000000 --- a/local/Makefile +++ /dev/null @@ -1,109 +0,0 @@ -COMPOSE := docker compose - -help: - @echo "make " - @echo "e.g. make all" - @echo "" - @echo "help Show this help message" - @echo "all Start full local stack (with Traefik)" - @echo "all-nowatch Start full local stack in background" - @echo "build Build docker images for local stack" - @echo "rebuild Force rebuild docker images (no cache)" - @echo "rafiki-assets Run Rafiki asset setup script" - @echo "down Stop the local stack" - @echo "hosts Add testnet host aliases to /etc/hosts (requires sudo)" - @echo "certs Generate TLS cert if missing (set FORCE_CERTS=1 to regenerate)" - @echo "trust Trust local TLS certificate (auto-detect OS, reloads Traefik)" - @echo "trust-macos Trust certificate on macOS" - @echo "trust-linux Trust certificate on Debian-based Linux (reloads Traefik)" - @echo "" - -.PHONY: help all all-nowatch build rebuild rafiki-assets down hosts certs trust trust-macos trust-linux - -all: certs - $(COMPOSE) up -d - @echo "" - @echo "Please open these ALL of these URLs in your browser and accept the self-signed certificates:" - @echo " - https://mockgatehub.testnet.test/health" - @echo " - https://api.testnet.test/health" - @echo " - https://api.boutique.testnet.test/products" - @echo " - https://rafiki-frontend.testnet.test" - @echo " - https://rafiki-backend.testnet.test/healthz" - @echo " - https://auth.testnet.test/healthz" - @echo " - https://testnet.test" - @echo " - https://boutique.testnet.test" - -build: - $(COMPOSE) build - -rebuild: - $(COMPOSE) build --no-cache - -rafiki-assets: - node ./scripts/rafiki-setup.js - -down: - $(COMPOSE) down - -reset: down - # Remove volumes - @$(COMPOSE) down -v - -certs: - mkdir -p config/certs - @if [ -f config/certs/local.crt ] && [ -f config/certs/local.key ] && [ "$(FORCE_CERTS)" != "1" ]; then \ - echo "TLS cert already exists. Reusing it (set FORCE_CERTS=1 to regenerate)."; \ - elif [ "$(HEADLESS)" = "1" ]; then \ - openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ - -keyout config/certs/local.key -out config/certs/local.crt \ - -subj "/CN=testnet.test/O=Interledger/C=US" \ - -config config/san.cnf; \ - else \ - openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ - -keyout config/certs/local.key -out config/certs/local.crt \ - -config config/san.cnf; \ - fi - -trust: certs - @if [ "$(shell uname -s)" = "Darwin" ]; then \ - $(MAKE) trust-macos; \ - else \ - $(MAKE) trust-linux; \ - fi - -trust-macos: certs - sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain config/certs/local.crt - @if $(COMPOSE) ps --status running --services traefik 2>/dev/null | grep -q '^traefik$$'; then \ - echo "Reloading Traefik to pick up trusted cert..."; \ - $(COMPOSE) restart traefik; \ - else \ - echo "Traefik is not running; skipping reload."; \ - fi - -trust-linux: certs - sudo cp config/certs/local.crt /usr/local/share/ca-certificates/interledger-testnet-local.crt - sudo update-ca-certificates - rm -rf $(HOME)/.pki/nssdb - mkdir -p $(HOME)/.pki/nssdb - certutil -d sql:$(HOME)/.pki/nssdb -N --empty-password - certutil -d sql:$(HOME)/.pki/nssdb -A -t "C,," -n "testnet.test" -i config/certs/local.crt - @if $(COMPOSE) ps --status running --services traefik 2>/dev/null | grep -q '^traefik$$'; then \ - echo "Reloading Traefik to pick up trusted cert..."; \ - $(COMPOSE) restart traefik; \ - else \ - echo "Traefik is not running; skipping reload."; \ - fi - -HOSTS := testnet.test \ - api.testnet.test \ - auth.testnet.test \ - rafiki-backend.testnet.test \ - rafiki-frontend.testnet.test \ - boutique.testnet.test \ - api.boutique.testnet.test \ - rafiki-card-service.testnet.test \ - mockgatehub.testnet.test - -hosts: - @sudo sed -i.bak '/# generated by make hosts/d' /etc/hosts && sudo rm -f /etc/hosts.bak - @$(foreach host,$(HOSTS),echo "127.0.0.1 $(host) # generated by make hosts" | sudo tee -a /etc/hosts > /dev/null;) \ No newline at end of file diff --git a/local/scripts/local-tools.sh b/local/scripts/local-tools.sh new file mode 100644 index 000000000..259343408 --- /dev/null +++ b/local/scripts/local-tools.sh @@ -0,0 +1,161 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" +LOCAL_DIR="$ROOT_DIR/local" +CERT_DIR="$LOCAL_DIR/config/certs" +CERT_CRT="$CERT_DIR/local.crt" +CERT_KEY="$CERT_DIR/local.key" +COMPOSE_FILE="$LOCAL_DIR/docker-compose.yml" +HOST_TAG="# generated by pnpm local:hosts" + +HOSTS=( + "testnet.test" + "api.testnet.test" + "auth.testnet.test" + "rafiki-backend.testnet.test" + "rafiki-frontend.testnet.test" + "boutique.testnet.test" + "api.boutique.testnet.test" + "rafiki-card-service.testnet.test" + "mockgatehub.testnet.test" +) + +compose() { + docker compose -f "$COMPOSE_FILE" "$@" +} + +reload_traefik_if_running() { + if compose ps --status running --services traefik 2>/dev/null | grep -q '^traefik$'; then + echo "Reloading Traefik to pick up trusted cert..." + compose restart traefik + else + echo "Traefik is not running; skipping reload." + fi +} + +run_certs() { + mkdir -p "$CERT_DIR" + + if [[ -f "$CERT_CRT" && -f "$CERT_KEY" && "${FORCE_CERTS:-0}" != "1" ]]; then + echo "TLS cert already exists. Reusing it (set FORCE_CERTS=1 to regenerate)." + return + fi + + if [[ "${HEADLESS:-0}" == "1" ]]; then + openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ + -keyout "$CERT_KEY" -out "$CERT_CRT" \ + -subj "/CN=testnet.test/O=Interledger/C=US" \ + -config "$LOCAL_DIR/config/san.cnf" + else + openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ + -keyout "$CERT_KEY" -out "$CERT_CRT" \ + -config "$LOCAL_DIR/config/san.cnf" + fi +} + +run_all() { + run_certs + compose up -d + + echo + echo "Please open these ALL of these URLs in your browser and accept the self-signed certificates:" + echo " - https://mockgatehub.testnet.test/health" + echo " - https://api.testnet.test/health" + echo " - https://api.boutique.testnet.test/products" + echo " - https://rafiki-frontend.testnet.test" + echo " - https://rafiki-backend.testnet.test/healthz" + echo " - https://auth.testnet.test/healthz" + echo " - https://testnet.test" + echo " - https://boutique.testnet.test" +} + +run_hosts() { + sudo sed -i.bak '/# generated by make hosts/d' /etc/hosts + sudo sed -i.bak '/# generated by pnpm local:hosts/d' /etc/hosts + sudo rm -f /etc/hosts.bak + + for host in "${HOSTS[@]}"; do + echo "127.0.0.1 $host $HOST_TAG" | sudo tee -a /etc/hosts >/dev/null + done +} + +run_trust_macos() { + run_certs + sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain "$CERT_CRT" + reload_traefik_if_running +} + +run_trust_linux() { + run_certs + sudo cp "$CERT_CRT" /usr/local/share/ca-certificates/interledger-testnet-local.crt + sudo update-ca-certificates + + rm -rf "$HOME/.pki/nssdb" + mkdir -p "$HOME/.pki/nssdb" + certutil -d sql:"$HOME/.pki/nssdb" -N --empty-password + certutil -d sql:"$HOME/.pki/nssdb" -A -t "C,," -n "testnet.test" -i "$CERT_CRT" + + reload_traefik_if_running +} + +run_trust() { + run_certs + + if [[ "$(uname -s)" == "Darwin" ]]; then + run_trust_macos + else + run_trust_linux + fi +} + +run_help() { + cat <<'EOF' +pnpm run + +e.g. pnpm local:all + +local:help Show this help message +local:all Start full local stack (with Traefik) +local:all-nowatch Alias for local:all +local:build Build docker images for local stack +local:rebuild Force rebuild docker images (no cache) +local:rafiki-assets Run Rafiki asset setup script +local:down Stop the local stack +local:reset Stop stack and remove volumes +local:hosts Add testnet host aliases to /etc/hosts (requires sudo) +local:certs Generate TLS cert if missing (set FORCE_CERTS=1 to regenerate) +local:trust Trust local TLS certificate (auto-detect OS, reloads Traefik) +local:trust:macos Trust certificate on macOS +local:trust:linux Trust certificate on Debian-based Linux (reloads Traefik) +EOF +} + +case "${1:-help}" in + help) + run_help + ;; + all) + run_all + ;; + certs) + run_certs + ;; + hosts) + run_hosts + ;; + trust) + run_trust + ;; + trust-macos) + run_trust_macos + ;; + trust-linux) + run_trust_linux + ;; + *) + echo "Unknown command: $1" >&2 + echo "Run: pnpm local:help" >&2 + exit 1 + ;; +esac diff --git a/package.json b/package.json index c65d2ea8b..c19e2381d 100644 --- a/package.json +++ b/package.json @@ -23,12 +23,23 @@ "lint:check": "eslint --max-warnings=0 .", "lint:fix": "eslint --max-warnings=0 --fix .", "compose": "docker compose -f ./local/docker-compose.yml", + "local:help": "bash ./local/scripts/local-tools.sh help", + "local:all": "bash ./local/scripts/local-tools.sh all", + "local:all-nowatch": "pnpm local:all", + "local:build": "pnpm compose build", + "local:rebuild": "pnpm compose build --no-cache", "local:up": "pnpm compose up -d --build", "local:up:debug": "cross-env DEV_MODE=debug pnpm compose up -d --build", "local:up:lite": "cross-env DEV_MODE=lite pnpm compose up -d --build", "local:down": "pnpm compose down", + "local:reset": "pnpm compose down -v", "local:logs": "pnpm compose logs -f", - "local:rafiki-assets": "make -C ./local rafiki-assets", + "local:certs": "bash ./local/scripts/local-tools.sh certs", + "local:hosts": "bash ./local/scripts/local-tools.sh hosts", + "local:trust": "bash ./local/scripts/local-tools.sh trust", + "local:trust:macos": "bash ./local/scripts/local-tools.sh trust-macos", + "local:trust:linux": "bash ./local/scripts/local-tools.sh trust-linux", + "local:rafiki-assets": "node ./local/scripts/rafiki-setup.js", "preinstall": "npx only-allow pnpm", "prettier:write": "prettier --config \".prettierrc.js\" --write .", "prettier:check": "prettier --config \".prettierrc.js\" --check .", From 7b59d24e7679d3d525fbb72f09ce4a86feecfb32 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Mon, 6 Apr 2026 14:22:57 +0200 Subject: [PATCH 15/51] docs: updated readme --- README.md | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 474c0a809..a094b20b1 100644 --- a/README.md +++ b/README.md @@ -152,14 +152,13 @@ and: pnpm dev:lite #backend containers will build and run the builds, no debug and no hot reload for these containers ``` -Upon executing the above command, the following will be available - -- Interledger Test Wallet application - - Frontend at [http://localhost:4003](http://localhost:4003) - - Backend at [http://localhost:3003](http://localhost:3003) - - Admin at [http://localhost:3012](http://localhost:3012) - -- Interledger Boutique e-commerce application - - Backend at [http://localhost:3004](http://localhost:3004) - - [http://localhost:4004](http://localhost:4004) - - [https://boutique.testnet.test](https://boutique.testnet.test) (via Traefik when boutique frontend dev server is running on port 4004) +Upon executing the above command, the following will be available: + +- [https://mockgatehub.testnet.test](https://mockgatehub.testnet.test) - Mock GateHub service used for local funding and related sandbox flows. +- [https://api.testnet.test](https://api.testnet.test) - Wallet backend API for the local Test Wallet environment. +- [https://api.boutique.testnet.test](https://api.boutique.testnet.test) - Boutique backend API serving product and checkout functionality. +- [https://rafiki-frontend.testnet.test](https://rafiki-frontend.testnet.test) - Rafiki frontend UI. +- [https://rafiki-backend.testnet.test](https://rafiki-backend.testnet.test) - Rafiki backend service. +- [https://auth.testnet.test](https://auth.testnet.test) - Local authentication service. +- [https://testnet.test](https://testnet.test) - Test Wallet frontend. +- [https://boutique.testnet.test](https://boutique.testnet.test) - Boutique frontend. From 0885074c60621342563e8d9203505143e67e9120 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Mon, 6 Apr 2026 15:18:29 +0200 Subject: [PATCH 16/51] lint: fixed all linting problems --- package.json | 1 + .../boutique/backend/src/open-payments/service.ts | 2 +- packages/boutique/backend/src/order/service.ts | 2 +- .../src/app/checkout/components/pay-button.tsx | 3 +-- .../frontend/src/components/navigation.tsx | 2 +- .../boutique/frontend/src/components/ui/input.tsx | 2 +- .../boutique/frontend/src/components/ui/label.tsx | 5 ++--- .../boutique/frontend/src/hooks/use-toast.tsx | 14 ++++++-------- packages/boutique/frontend/tailwind.config.cjs | 3 ++- packages/shared/backend/src/utils.ts | 4 ++-- packages/wallet/backend/src/backfillTrxDetails.ts | 2 +- packages/wallet/backend/src/config/rafiki.ts | 4 ++-- packages/wallet/backend/src/gatehub/types.ts | 10 +++++----- .../wallet/backend/src/walletAddress/service.ts | 9 +++++---- .../backend/src/walletAddressKeys/service.ts | 4 ++-- .../src/components/dialogs/SuccessDialog.tsx | 2 +- packages/wallet/frontend/src/lib/api/card.ts | 2 +- .../wallet/frontend/src/lib/hooks/useToast.ts | 14 ++++++-------- .../frontend/src/lib/hooks/useTransactions.ts | 6 +----- packages/wallet/frontend/src/lib/types/app.ts | 2 +- packages/wallet/frontend/src/lib/types/dialog.ts | 7 +------ packages/wallet/frontend/src/pages/auth/login.tsx | 8 +++++--- packages/wallet/frontend/src/pages/send.tsx | 2 +- .../wallet/frontend/src/pages/transactions.tsx | 8 +++++--- packages/wallet/frontend/src/ui/TogglePayment.tsx | 2 +- packages/wallet/shared/src/types/grant.ts | 15 ++------------- packages/wallet/shared/src/types/transaction.ts | 14 ++------------ 27 files changed, 60 insertions(+), 89 deletions(-) diff --git a/package.json b/package.json index c19e2381d..b9934a36f 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "dev:debug": "pnpm local:up:debug && concurrently -n \"WALLET,BOUTIQUE\" -c blue.bold,red.bold \"pnpm wallet:frontend dev\" \"pnpm boutique:frontend dev\"", "dev:lite": "pnpm local:up:lite && concurrently -n \"WALLET,BOUTIQUE\" -c blue.bold,red.bold \"pnpm wallet:frontend dev\" \"pnpm boutique:frontend dev\"", "format": "pnpm prettier:write && pnpm lint:fix", + "lint": "pnpm lint:check", "lint:check": "eslint --max-warnings=0 .", "lint:fix": "eslint --max-warnings=0 --fix .", "compose": "docker compose -f ./local/docker-compose.yml", diff --git a/packages/boutique/backend/src/open-payments/service.ts b/packages/boutique/backend/src/open-payments/service.ts index 9dde1e00b..6ab901b3b 100644 --- a/packages/boutique/backend/src/open-payments/service.ts +++ b/packages/boutique/backend/src/open-payments/service.ts @@ -192,7 +192,7 @@ export class OpenPayments implements IOpenPayments { ) throw new InternalServerError() }) - } catch (err) { + } catch { throw new InternalServerError() } } diff --git a/packages/boutique/backend/src/order/service.ts b/packages/boutique/backend/src/order/service.ts index 507e5b90c..722faeefa 100644 --- a/packages/boutique/backend/src/order/service.ts +++ b/packages/boutique/backend/src/order/service.ts @@ -4,7 +4,7 @@ import { TransactionOrKnex } from 'objection' import { Logger } from 'winston' import { InternalServerError, NotFound } from '@shared/backend' -interface OrderItemParams extends Pick {} +type OrderItemParams = Pick interface CreateParams { userId?: string diff --git a/packages/boutique/frontend/src/app/checkout/components/pay-button.tsx b/packages/boutique/frontend/src/app/checkout/components/pay-button.tsx index 93039d6ad..47f7198b5 100644 --- a/packages/boutique/frontend/src/app/checkout/components/pay-button.tsx +++ b/packages/boutique/frontend/src/app/checkout/components/pay-button.tsx @@ -2,8 +2,7 @@ import { PayWithInterledgerMark } from '@/components/icons.tsx' import { Button, ButtonProps } from '@/components/ui/button.tsx' import { cn } from '@/lib/utils.ts' -export interface PayButtonProps - extends Omit {} +export type PayButtonProps = Omit export const PayButton = ({ className, ...props }: PayButtonProps) => { return ( diff --git a/packages/boutique/frontend/src/components/navigation.tsx b/packages/boutique/frontend/src/components/navigation.tsx index 7591ee976..6cc1bff67 100644 --- a/packages/boutique/frontend/src/components/navigation.tsx +++ b/packages/boutique/frontend/src/components/navigation.tsx @@ -19,7 +19,7 @@ const NAV_LINKS = [ } ] -interface MainNavLinkProps extends Omit {} +type MainNavLinkProps = Omit export const MainNavLink = (props: MainNavLinkProps) => { return ( diff --git a/packages/boutique/frontend/src/components/ui/input.tsx b/packages/boutique/frontend/src/components/ui/input.tsx index c2d6b8e2d..ef7330a0c 100644 --- a/packages/boutique/frontend/src/components/ui/input.tsx +++ b/packages/boutique/frontend/src/components/ui/input.tsx @@ -1,7 +1,7 @@ import { InputHTMLAttributes, forwardRef } from 'react' import { cn } from '@/lib/utils' -export interface InputProps extends InputHTMLAttributes {} +export type InputProps = InputHTMLAttributes export const Input = forwardRef( ({ className, type, ...props }, ref) => { diff --git a/packages/boutique/frontend/src/components/ui/label.tsx b/packages/boutique/frontend/src/components/ui/label.tsx index fff9a70ff..63ae8f20b 100644 --- a/packages/boutique/frontend/src/components/ui/label.tsx +++ b/packages/boutique/frontend/src/components/ui/label.tsx @@ -2,10 +2,9 @@ import { ComponentPropsWithoutRef, ElementRef, forwardRef } from 'react' import * as LabelPrimitive from '@radix-ui/react-label' import { cn } from '@/lib/utils' -export interface LabelRefType extends ElementRef {} +export type LabelRefType = ElementRef -export interface LabelProps - extends ComponentPropsWithoutRef {} +export type LabelProps = ComponentPropsWithoutRef export const Label = forwardRef( ({ className, ...props }, ref) => ( diff --git a/packages/boutique/frontend/src/hooks/use-toast.tsx b/packages/boutique/frontend/src/hooks/use-toast.tsx index 0b17d633f..b1c85170a 100644 --- a/packages/boutique/frontend/src/hooks/use-toast.tsx +++ b/packages/boutique/frontend/src/hooks/use-toast.tsx @@ -11,13 +11,6 @@ type ToasterToast = ToastProps & { action?: ToastActionElement } -const actionTypes = { - ADD_TOAST: 'ADD_TOAST', - UPDATE_TOAST: 'UPDATE_TOAST', - DISMISS_TOAST: 'DISMISS_TOAST', - REMOVE_TOAST: 'REMOVE_TOAST' -} as const - let count = 0 function genId() { @@ -25,7 +18,12 @@ function genId() { return count.toString() } -type ActionType = typeof actionTypes +type ActionType = { + ADD_TOAST: 'ADD_TOAST' + UPDATE_TOAST: 'UPDATE_TOAST' + DISMISS_TOAST: 'DISMISS_TOAST' + REMOVE_TOAST: 'REMOVE_TOAST' +} type Action = | { diff --git a/packages/boutique/frontend/tailwind.config.cjs b/packages/boutique/frontend/tailwind.config.cjs index 931f94bcb..f809e4aff 100644 --- a/packages/boutique/frontend/tailwind.config.cjs +++ b/packages/boutique/frontend/tailwind.config.cjs @@ -1,4 +1,5 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ + +/* eslint-disable @typescript-eslint/no-require-imports */ const twColors = require('tailwindcss/colors') /** @type {import('tailwindcss').Config} */ diff --git a/packages/shared/backend/src/utils.ts b/packages/shared/backend/src/utils.ts index 4dbc85d67..5891b6381 100644 --- a/packages/shared/backend/src/utils.ts +++ b/packages/shared/backend/src/utils.ts @@ -13,8 +13,8 @@ export function deleteProperty( return newObj } -interface SuccessResponse extends Omit {} -interface ErrorResponse extends Omit {} +type SuccessResponse = Omit +type ErrorResponse = Omit export function toSuccessResponse( result?: T, diff --git a/packages/wallet/backend/src/backfillTrxDetails.ts b/packages/wallet/backend/src/backfillTrxDetails.ts index d90879457..49d79112f 100644 --- a/packages/wallet/backend/src/backfillTrxDetails.ts +++ b/packages/wallet/backend/src/backfillTrxDetails.ts @@ -78,7 +78,7 @@ async function backfillTrxDetails() { page++ } - } catch (e) { + } catch { console.log('Failed to update trx for account: ', account.user.email) } } diff --git a/packages/wallet/backend/src/config/rafiki.ts b/packages/wallet/backend/src/config/rafiki.ts index e9d04983f..a519facdf 100644 --- a/packages/wallet/backend/src/config/rafiki.ts +++ b/packages/wallet/backend/src/config/rafiki.ts @@ -26,7 +26,7 @@ function createSignedClient(endpoint: string, env: Env) { try { const body: GraphQLRequestBody = JSON.parse(request.body) query = body.query || '' - } catch (e) { + } catch { // Body is not valid JSON - this shouldn't happen with GraphQL requests // but we'll handle it gracefully query = '' @@ -55,7 +55,7 @@ function createSignedClient(endpoint: string, env: Env) { 'tenant-id': env.OPERATOR_TENANT_ID } } - } catch (e) { + } catch { return request } } diff --git a/packages/wallet/backend/src/gatehub/types.ts b/packages/wallet/backend/src/gatehub/types.ts index 208b2ae91..30f6ddcfe 100644 --- a/packages/wallet/backend/src/gatehub/types.ts +++ b/packages/wallet/backend/src/gatehub/types.ts @@ -99,9 +99,9 @@ export interface IFundAccountRequest { absolute_fee?: number } -export interface ICreateTransactionResponse {} +export type ICreateTransactionResponse = Record -export interface IGetVaultsResponse {} +export type IGetVaultsResponse = Record export interface IRatesResponse { counter: string @@ -130,19 +130,19 @@ interface IVault { updated_at: string } -export interface IConnectUserToGatewayResponse {} +export type IConnectUserToGatewayResponse = Record export interface IApproveUserToGatewayRequest { verified: number reasons: string[] customMessage: boolean } -export interface IApproveUserToGatewayResponse {} +export type IApproveUserToGatewayResponse = Record export interface IOverrideUserRiskLevelRequest { risk_level: string reason: string } -export interface IOverrideUserRiskLevelResponse {} +export type IOverrideUserRiskLevelResponse = Record export type WebhookEventType = | 'core.deposit.completed' diff --git a/packages/wallet/backend/src/walletAddress/service.ts b/packages/wallet/backend/src/walletAddress/service.ts index 48496fa6f..684b50eeb 100644 --- a/packages/wallet/backend/src/walletAddress/service.ts +++ b/packages/wallet/backend/src/walletAddress/service.ts @@ -239,13 +239,14 @@ export class WalletAddressService implements IWalletAddressService { const updatedWalletAddress = await walletAddress .$query(trx) .findById(walletAddressId) - updatedWalletAddress && - (await this.cache.set(walletAddressId, updatedWalletAddress, { + if (updatedWalletAddress) { + await this.cache.set(walletAddressId, updatedWalletAddress, { expiry: 60 - })) + }) + } await trx.commit() - } catch (e) { + } catch { await trx.rollback() } } diff --git a/packages/wallet/backend/src/walletAddressKeys/service.ts b/packages/wallet/backend/src/walletAddressKeys/service.ts index 45439d526..a4a2173a9 100644 --- a/packages/wallet/backend/src/walletAddressKeys/service.ts +++ b/packages/wallet/backend/src/walletAddressKeys/service.ts @@ -196,7 +196,7 @@ export class WalletAddressKeyService implements IWalletAddressKeyService { this.rafikiClient.revokeWalletAddressKey(walletAddressKey.rafikiId) ]) await trx.commit() - } catch (e) { + } catch { await trx.rollback() } } @@ -230,7 +230,7 @@ export class WalletAddressKeyService implements IWalletAddressKeyService { }) ) await trx.commit() - } catch (e) { + } catch { await trx.rollback() } } diff --git a/packages/wallet/frontend/src/components/dialogs/SuccessDialog.tsx b/packages/wallet/frontend/src/components/dialogs/SuccessDialog.tsx index 68c476934..937ab6e2d 100644 --- a/packages/wallet/frontend/src/components/dialogs/SuccessDialog.tsx +++ b/packages/wallet/frontend/src/components/dialogs/SuccessDialog.tsx @@ -38,7 +38,7 @@ export const SuccessDialog = ({ } = { href: redirect ?? '/', onClick: () => { - onSuccess ? onSuccess() : undefined + if (onSuccess) onSuccess() onClose() } } diff --git a/packages/wallet/frontend/src/lib/api/card.ts b/packages/wallet/frontend/src/lib/api/card.ts index 0dd14a126..075aa08d8 100644 --- a/packages/wallet/frontend/src/lib/api/card.ts +++ b/packages/wallet/frontend/src/lib/api/card.ts @@ -82,7 +82,7 @@ type MonthlySpendingLimitError = ErrorResponse< > type MonthlySpendingLimitResult = SuccessResponse | MonthlySpendingLimitError -const getCardDataSchema = z.object({ +export const getCardDataSchema = z.object({ password: z.string(), publicKeyBase64: z.string() }) diff --git a/packages/wallet/frontend/src/lib/hooks/useToast.ts b/packages/wallet/frontend/src/lib/hooks/useToast.ts index 4d3df06ca..73ef2bf53 100644 --- a/packages/wallet/frontend/src/lib/hooks/useToast.ts +++ b/packages/wallet/frontend/src/lib/hooks/useToast.ts @@ -11,13 +11,6 @@ type ToasterToast = ToastProps & { action?: ToastActionElement } -const actionTypes = { - ADD_TOAST: 'ADD_TOAST', - UPDATE_TOAST: 'UPDATE_TOAST', - DISMISS_TOAST: 'DISMISS_TOAST', - REMOVE_TOAST: 'REMOVE_TOAST' -} as const - let count = 0 function genId() { @@ -25,7 +18,12 @@ function genId() { return count.toString() } -type ActionType = typeof actionTypes +type ActionType = { + ADD_TOAST: 'ADD_TOAST' + UPDATE_TOAST: 'UPDATE_TOAST' + DISMISS_TOAST: 'DISMISS_TOAST' + REMOVE_TOAST: 'REMOVE_TOAST' +} type Action = | { diff --git a/packages/wallet/frontend/src/lib/hooks/useTransactions.ts b/packages/wallet/frontend/src/lib/hooks/useTransactions.ts index e9536676b..c6468cbc5 100644 --- a/packages/wallet/frontend/src/lib/hooks/useTransactions.ts +++ b/packages/wallet/frontend/src/lib/hooks/useTransactions.ts @@ -12,11 +12,7 @@ type TransactionsQueryParams = Record< keyof TransactionsFilters, string | number > -const ORDER_DIRECTION = { - ASC: 'ASC', - DESC: 'DESC' -} -export type OrderByDirection = keyof typeof ORDER_DIRECTION +export type OrderByDirection = 'ASC' | 'DESC' export type TransactionsFilters = { page: string diff --git a/packages/wallet/frontend/src/lib/types/app.ts b/packages/wallet/frontend/src/lib/types/app.ts index 2eafcfa56..118b17383 100644 --- a/packages/wallet/frontend/src/lib/types/app.ts +++ b/packages/wallet/frontend/src/lib/types/app.ts @@ -2,7 +2,7 @@ import type { NextPage } from 'next/types' import type { AppProps } from 'next/app' import type { ReactElement, ReactNode } from 'react' -// eslint-disable-next-line @typescript-eslint/ban-types +// eslint-disable-next-line @typescript-eslint/no-empty-object-type export type NextPageWithLayout = NextPage< Props, InitialProps diff --git a/packages/wallet/frontend/src/lib/types/dialog.ts b/packages/wallet/frontend/src/lib/types/dialog.ts index 10a4045e8..5d7be3177 100644 --- a/packages/wallet/frontend/src/lib/types/dialog.ts +++ b/packages/wallet/frontend/src/lib/types/dialog.ts @@ -6,16 +6,11 @@ export type DialogProps = { onClose: () => void } -const DIALOG_ACTIONS = { - OPEN: 'OPEN', - CLOSE: 'CLOSE' -} as const - export type DialogState = { isOpen: boolean dialog: JSX.Element | null } -export type DialogActions = keyof typeof DIALOG_ACTIONS +export type DialogActions = 'OPEN' | 'CLOSE' export type OpenDialogAction = { type: DialogActions data: { diff --git a/packages/wallet/frontend/src/pages/auth/login.tsx b/packages/wallet/frontend/src/pages/auth/login.tsx index 996e8bcc4..b96e835ef 100644 --- a/packages/wallet/frontend/src/pages/auth/login.tsx +++ b/packages/wallet/frontend/src/pages/auth/login.tsx @@ -76,9 +76,11 @@ const LoginPage: NextPageWithLayout = () => { const isIncorrectCallbackUrl = !callbackPath.startsWith('/') && !callbackPath.startsWith(window.location.origin) - isIncorrectCallbackUrl - ? router.push('/') - : router.push(callbackPath).catch(() => router.push('/')) + if (isIncorrectCallbackUrl) { + router.push('/') + } else { + router.push(callbackPath).catch(() => router.push('/')) + } } function togglePasswordVisibility() { diff --git a/packages/wallet/frontend/src/pages/send.tsx b/packages/wallet/frontend/src/pages/send.tsx index 9b25121e6..76f3b0076 100644 --- a/packages/wallet/frontend/src/pages/send.tsx +++ b/packages/wallet/frontend/src/pages/send.tsx @@ -316,7 +316,7 @@ const SendPage: NextPageWithLayout = ({ accounts, user }) => { type="quote" onAccept={() => { handleAcceptQuote(quoteId) - closeDialog + closeDialog() }} onClose={closeDialog} /> diff --git a/packages/wallet/frontend/src/pages/transactions.tsx b/packages/wallet/frontend/src/pages/transactions.tsx index 448a35894..e2d8dbf30 100644 --- a/packages/wallet/frontend/src/pages/transactions.tsx +++ b/packages/wallet/frontend/src/pages/transactions.tsx @@ -287,9 +287,11 @@ const TransactionsPage: NextPageWithLayout = ({ { header: 'Date', sortFn: () => { - pagination.orderByDate === 'DESC' - ? redirect({ orderByDate: 'ASC' }) - : redirect({ orderByDate: 'DESC' }) + if (pagination.orderByDate === 'DESC') { + redirect({ orderByDate: 'ASC' }) + } else { + redirect({ orderByDate: 'DESC' }) + } }, getDirection: () => { return pagination.orderByDate === 'DESC' ? 'down' : 'up' diff --git a/packages/wallet/frontend/src/ui/TogglePayment.tsx b/packages/wallet/frontend/src/ui/TogglePayment.tsx index 342c7d6fa..b1c58ffde 100644 --- a/packages/wallet/frontend/src/ui/TogglePayment.tsx +++ b/packages/wallet/frontend/src/ui/TogglePayment.tsx @@ -39,7 +39,7 @@ export const TogglePayment = ({ const handleOnChange = () => { if (!disabled) { setEnabled(!enabled) - onChange && onChange(!enabled) + if (onChange) onChange(!enabled) } } diff --git a/packages/wallet/shared/src/types/grant.ts b/packages/wallet/shared/src/types/grant.ts index ad47cc18b..967aec86f 100644 --- a/packages/wallet/shared/src/types/grant.ts +++ b/packages/wallet/shared/src/types/grant.ts @@ -1,17 +1,6 @@ -const GRANT_STATE = { - APPROVED: 'APPROVED', - FINALIZED: 'FINALIZED', - PENDING: 'PENDING', - PROCESSING: 'PROCESSING' -} as const -type GrantState = keyof typeof GRANT_STATE +type GrantState = 'APPROVED' | 'FINALIZED' | 'PENDING' | 'PROCESSING' -const GRANT_FINALIZATION = { - ISSUED: 'ISSUED', - REJECTED: 'REJECTED', - REVOKED: 'REVOKED' -} -type GrantFinalization = keyof typeof GRANT_FINALIZATION +type GrantFinalization = 'ISSUED' | 'REJECTED' | 'REVOKED' type PaymentAmount = { value: string diff --git a/packages/wallet/shared/src/types/transaction.ts b/packages/wallet/shared/src/types/transaction.ts index 9fb7468c3..7e3bf19ce 100644 --- a/packages/wallet/shared/src/types/transaction.ts +++ b/packages/wallet/shared/src/types/transaction.ts @@ -1,16 +1,6 @@ -enum TRANSACTION_TYPE { - INCOMING = 'INCOMING', - OUTGOING = 'OUTGOING' -} -export type TransactionType = keyof typeof TRANSACTION_TYPE +export type TransactionType = 'INCOMING' | 'OUTGOING' -enum TRANSACTION_STATUS { - PENDING = 'PENDING', - COMPLETED = 'COMPLETED', - EXPIRED = 'EXPIRED', - FAILED = 'FAILED' -} -type TransactionStatus = keyof typeof TRANSACTION_STATUS +type TransactionStatus = 'PENDING' | 'COMPLETED' | 'EXPIRED' | 'FAILED' export enum CardTrxTypeEnum { Purchase = 0, From 49b77f84201f9eed9791b86d8591fc2c3e11cdbb Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Mon, 6 Apr 2026 16:06:31 +0200 Subject: [PATCH 17/51] fix: cleanup of debug --- README.md | 1 + local/scripts/rafiki-setup.js | 2 +- packages/boutique/backend/src/config/env.ts | 3 ++- .../boutique/backend/src/open-payments/service.ts | 14 ++------------ .../src/app/checkout/components/pay-button.tsx | 5 ++++- packages/boutique/frontend/tailwind.config.cjs | 1 - 6 files changed, 10 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index a094b20b1..4d92289c2 100644 --- a/README.md +++ b/README.md @@ -114,6 +114,7 @@ pnpm local:rafiki-assets # set up the Rafiki assets after the stack is up ``` Notes: + - `pnpm local:hosts` and `pnpm local:trust` require `sudo` on most systems. - If certs already exist, `pnpm local:trust` reuses them. diff --git a/local/scripts/rafiki-setup.js b/local/scripts/rafiki-setup.js index 4f1e7d3ac..8286dcaf4 100644 --- a/local/scripts/rafiki-setup.js +++ b/local/scripts/rafiki-setup.js @@ -202,7 +202,7 @@ const depositAssetLiquidityMutation = /* GraphQL */ ` const assetsToEnsure = [ { code: 'USD', scale: 2 }, - { code: 'EUR', scale: 2 }, + { code: 'EUR', scale: 2 } // { code: 'GBP', scale: 2 }, // { code: 'ZAR', scale: 2 }, // { code: 'MXN', scale: 2 }, diff --git a/packages/boutique/backend/src/config/env.ts b/packages/boutique/backend/src/config/env.ts index e53bbe147..39b76b0d2 100644 --- a/packages/boutique/backend/src/config/env.ts +++ b/packages/boutique/backend/src/config/env.ts @@ -4,7 +4,8 @@ const requiredString = z.string().trim().min(1) const nonPlaceholderString = requiredString.refine( (value) => value !== 'replace-me', { - message: 'Environment variable must be configured with a non-placeholder value' + message: + 'Environment variable must be configured with a non-placeholder value' } ) diff --git a/packages/boutique/backend/src/open-payments/service.ts b/packages/boutique/backend/src/open-payments/service.ts index 6ab901b3b..a36d77860 100644 --- a/packages/boutique/backend/src/open-payments/service.ts +++ b/packages/boutique/backend/src/open-payments/service.ts @@ -423,10 +423,6 @@ export class OpenPayments implements IOpenPayments { finishUrl ?? `${this.env.FRONTEND_URL}/checkout/confirmation?orderId=${identifier}` - this.logger.debug( - `[DEBUG-GRANT] createOutgoingPaymentGrant: authServer=${authServer}, walletAddress=${walletAddress}, identifier=${identifier}, finishUrl=${finish}` - ) - const grant = await this.opClient.grant .request( { url: authServer }, @@ -451,12 +447,8 @@ export class OpenPayments implements IOpenPayments { } } ) - .catch((err: unknown) => { + .catch(() => { this.logger.error('Could not retrieve outgoing payment grant.') - this.logger.error(`[DEBUG-GRANT] Grant request error: ${err instanceof Error ? err.message : String(err)}`) - if (err instanceof Error && 'status' in err) { - this.logger.error(`[DEBUG-GRANT] HTTP status: ${(err as { status: number }).status}`) - } throw new InternalServerError() }) @@ -493,14 +485,12 @@ export class OpenPayments implements IOpenPayments { } private async getWalletAddress(url: string) { - this.logger.debug(`[DEBUG-GRANT] getWalletAddress: fetching ${url}`) const walletAddress = await this.opClient.walletAddress .get({ url }) - .catch((err: unknown) => { + .catch(() => { this.logger.error(`Could not fetch wallet address "${url}".`) - this.logger.error(`[DEBUG-GRANT] walletAddress fetch error: ${err instanceof Error ? err.message : String(err)}`) throw new BadRequest('Invalid wallet address.') }) diff --git a/packages/boutique/frontend/src/app/checkout/components/pay-button.tsx b/packages/boutique/frontend/src/app/checkout/components/pay-button.tsx index 47f7198b5..31820dc2d 100644 --- a/packages/boutique/frontend/src/app/checkout/components/pay-button.tsx +++ b/packages/boutique/frontend/src/app/checkout/components/pay-button.tsx @@ -2,7 +2,10 @@ import { PayWithInterledgerMark } from '@/components/icons.tsx' import { Button, ButtonProps } from '@/components/ui/button.tsx' import { cn } from '@/lib/utils.ts' -export type PayButtonProps = Omit +export type PayButtonProps = Omit< + ButtonProps, + 'variant' | 'size' | 'aria-label' +> export const PayButton = ({ className, ...props }: PayButtonProps) => { return ( diff --git a/packages/boutique/frontend/tailwind.config.cjs b/packages/boutique/frontend/tailwind.config.cjs index f809e4aff..ec5dc93be 100644 --- a/packages/boutique/frontend/tailwind.config.cjs +++ b/packages/boutique/frontend/tailwind.config.cjs @@ -1,4 +1,3 @@ - /* eslint-disable @typescript-eslint/no-require-imports */ const twColors = require('tailwindcss/colors') From 44b91d3036b5ad1df3582387a76bd92a3c583bdb Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Mon, 6 Apr 2026 16:24:13 +0200 Subject: [PATCH 18/51] test: wallet unittest configuration fixes --- packages/boutique/backend/jest.setup.js | 15 ++++++++++++++- packages/boutique/backend/jest.teardown.js | 7 +++++-- packages/wallet/backend/jest.setup.js | 7 +++++++ 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/packages/boutique/backend/jest.setup.js b/packages/boutique/backend/jest.setup.js index be13fe3c6..28d9804ef 100644 --- a/packages/boutique/backend/jest.setup.js +++ b/packages/boutique/backend/jest.setup.js @@ -4,6 +4,7 @@ const { randomBytes, generateKeyPairSync } = require('crypto') const POSTGRES_PASSWORD = 'password' const POSTGRES_DB = randomBytes(16).toString('hex') const POSTGRES_PORT = 5432 +const REDIS_PORT = 6379 module.exports = async () => { const container = await new GenericContainer('postgres:15') @@ -14,10 +15,20 @@ module.exports = async () => { .withExposedPorts(POSTGRES_PORT) .start() + const redisContainer = await new GenericContainer('redis:7') + .withExposedPorts(REDIS_PORT) + .start() + + // env.ts requires these variables without defaults, so we supply + // test-safe values here to prevent process.exit(1) during import. + process.env.PORT = '0' + process.env.NODE_ENV = 'test' + process.env.FRONTEND_URL = 'http://localhost:4004' process.env.DATABASE_URL = `postgresql://postgres:${POSTGRES_PASSWORD}@localhost:${container.getMappedPort( POSTGRES_PORT )}/${POSTGRES_DB}` - + process.env.PAYMENT_POINTER = 'https://ilp.interledger-test.dev/boutique' + process.env.KEY_ID = 'test-key-id' process.env.PRIVATE_KEY = Buffer.from( generateKeyPairSync('ed25519') .privateKey.export({ @@ -26,6 +37,8 @@ module.exports = async () => { }) .trim() ).toString('base64') + process.env.REDIS_URL = `redis://localhost:${redisContainer.getMappedPort(REDIS_PORT)}/0` global.__POSTGRES_CONTAINER__ = container + global.__TESTING_REDIS_CONTAINER__ = redisContainer } diff --git a/packages/boutique/backend/jest.teardown.js b/packages/boutique/backend/jest.teardown.js index 77def90f1..9b3c3afb6 100644 --- a/packages/boutique/backend/jest.teardown.js +++ b/packages/boutique/backend/jest.teardown.js @@ -1,5 +1,8 @@ module.exports = async () => { - if (global.__TESTING_POSTGRES_CONTAINER__) { - await global.__TESTING_POSTGRES_CONTAINER__.stop() + if (global.__POSTGRES_CONTAINER__) { + await global.__POSTGRES_CONTAINER__.stop() + } + if (global.__TESTING_REDIS_CONTAINER__) { + await global.__TESTING_REDIS_CONTAINER__.stop() } } diff --git a/packages/wallet/backend/jest.setup.js b/packages/wallet/backend/jest.setup.js index 400d7183b..493aeddd1 100644 --- a/packages/wallet/backend/jest.setup.js +++ b/packages/wallet/backend/jest.setup.js @@ -25,6 +25,13 @@ module.exports = async () => { POSTGRES_PORT )}/${POSTGRES_DB}` + // env.ts requires these GateHub URLs without defaults, so we supply + // test-safe sandbox values here to prevent process.exit(1) during import. + process.env.GATEHUB_API_BASE_URL = 'https://api.sandbox.gatehub.net' + process.env.GATEHUB_IFRAME_MANAGED_RAMP_URL = 'https://managed-ramp.sandbox.gatehub.net' + process.env.GATEHUB_IFRAME_EXCHANGE_URL = 'https://exchange.sandbox.gatehub.net' + process.env.GATEHUB_IFRAME_ONBOARDING_URL = 'https://onboarding.sandbox.gatehub.net' + global.__TESTING_POSTGRES_CONTAINER__ = container global.__TESTING_REDIS_CONTAINER__ = redisContainer } From 69779c8aebbad4545fc695f77aa0beea25a79ec2 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Mon, 13 Apr 2026 08:49:32 +0200 Subject: [PATCH 19/51] style: prettier automatic fixes to resolve linting --- packages/wallet/backend/jest.setup.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/wallet/backend/jest.setup.js b/packages/wallet/backend/jest.setup.js index 493aeddd1..08ed6af66 100644 --- a/packages/wallet/backend/jest.setup.js +++ b/packages/wallet/backend/jest.setup.js @@ -28,9 +28,12 @@ module.exports = async () => { // env.ts requires these GateHub URLs without defaults, so we supply // test-safe sandbox values here to prevent process.exit(1) during import. process.env.GATEHUB_API_BASE_URL = 'https://api.sandbox.gatehub.net' - process.env.GATEHUB_IFRAME_MANAGED_RAMP_URL = 'https://managed-ramp.sandbox.gatehub.net' - process.env.GATEHUB_IFRAME_EXCHANGE_URL = 'https://exchange.sandbox.gatehub.net' - process.env.GATEHUB_IFRAME_ONBOARDING_URL = 'https://onboarding.sandbox.gatehub.net' + process.env.GATEHUB_IFRAME_MANAGED_RAMP_URL = + 'https://managed-ramp.sandbox.gatehub.net' + process.env.GATEHUB_IFRAME_EXCHANGE_URL = + 'https://exchange.sandbox.gatehub.net' + process.env.GATEHUB_IFRAME_ONBOARDING_URL = + 'https://onboarding.sandbox.gatehub.net' global.__TESTING_POSTGRES_CONTAINER__ = container global.__TESTING_REDIS_CONTAINER__ = redisContainer From ea6785fcc0df6d3f80628ba3ab0c6566edbab221 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Mon, 13 Apr 2026 11:14:03 +0200 Subject: [PATCH 20/51] fix: better secure domain handling --- README.md | 4 +- local/boutique.yaml | 4 +- local/config/certs/local.crt | 40 ++++---- local/config/certs/local.key | 52 +++++----- local/config/san.cnf | 15 +-- local/rafiki.yaml | 2 +- local/scripts/local-tools.sh | 94 +++++++++++++++++-- local/wallet.yaml | 2 +- .../boutique/frontend/src/lib/constants.ts | 2 +- .../backend/src/middleware/withSession.ts | 7 +- packages/wallet/frontend/next.config.js | 3 + 11 files changed, 150 insertions(+), 75 deletions(-) diff --git a/README.md b/README.md index 4d92289c2..6fa1270c2 100644 --- a/README.md +++ b/README.md @@ -157,9 +157,9 @@ Upon executing the above command, the following will be available: - [https://mockgatehub.testnet.test](https://mockgatehub.testnet.test) - Mock GateHub service used for local funding and related sandbox flows. - [https://api.testnet.test](https://api.testnet.test) - Wallet backend API for the local Test Wallet environment. -- [https://api.boutique.testnet.test](https://api.boutique.testnet.test) - Boutique backend API serving product and checkout functionality. +- [https://boutique-api.testnet.test](https://boutique-api.testnet.test) - Boutique backend API serving product and checkout functionality. - [https://rafiki-frontend.testnet.test](https://rafiki-frontend.testnet.test) - Rafiki frontend UI. - [https://rafiki-backend.testnet.test](https://rafiki-backend.testnet.test) - Rafiki backend service. - [https://auth.testnet.test](https://auth.testnet.test) - Local authentication service. -- [https://testnet.test](https://testnet.test) - Test Wallet frontend. +- [https://wallet.testnet.test](https://wallet.testnet.test) - Test Wallet frontend. - [https://boutique.testnet.test](https://boutique.testnet.test) - Boutique frontend. diff --git a/local/boutique.yaml b/local/boutique.yaml index 1b3cfc18e..dc983bd78 100644 --- a/local/boutique.yaml +++ b/local/boutique.yaml @@ -34,7 +34,7 @@ services: - rafiki-card-service.testnet.test:host-gateway - mockgatehub.testnet.test:host-gateway - boutique.testnet.test:host-gateway - - api.boutique.testnet.test:host-gateway + - boutique-api.testnet.test:host-gateway restart: always networks: - testnet @@ -44,7 +44,7 @@ services: labels: - traefik.enable=true - traefik.docker.network=testnet - - traefik.http.routers.boutique-backend.rule=Host(`api.boutique.testnet.test`) + - traefik.http.routers.boutique-backend.rule=Host(`boutique-api.testnet.test`) - traefik.http.routers.boutique-backend.entrypoints=websecure - traefik.http.routers.boutique-backend.tls=true - traefik.http.services.boutique-backend.loadbalancer.server.port=3004 diff --git a/local/config/certs/local.crt b/local/config/certs/local.crt index 425a28954..a87a3f86b 100644 --- a/local/config/certs/local.crt +++ b/local/config/certs/local.crt @@ -1,24 +1,20 @@ -----BEGIN CERTIFICATE----- -MIIECjCCAvKgAwIBAgIUGQpgTEawPo2sgagRQ0Z817S6fkIwDQYJKoZIhvcNAQEL -BQAwOjEVMBMGA1UEAwwMdGVzdG5ldC50ZXN0MRQwEgYDVQQKDAtJbnRlcmxlZGdl -cjELMAkGA1UEBhMCVVMwHhcNMjYwNDA1MTYzMTQ5WhcNMzYwNDAyMTYzMTQ5WjA6 -MRUwEwYDVQQDDAx0ZXN0bmV0LnRlc3QxFDASBgNVBAoMC0ludGVybGVkZ2VyMQsw -CQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM7+4Llw -6aibJCJrFzyKvmrXykalyI955nD04P6ZHKhIPZYANWPUe4/ps5ZsqJFUUG0KTtkd -uEHp+eN8sOTNSZ+VcSKzecp+9lMLTUUMKWNxC8ktiWbvS7wxvOHR/tOpATQSz/VT -J/jHLemcURszhv8RGa+9ErKPYWyJJqnhaiLzB1ljyxIKFPQBIgxnEdGiFaNLOIXP -Oemuev/auL7P/f3/yIXY2ecisGvR3bBI4Y9HL2zNEfsmgBmA402ONlQuKNyMnchx -mP6YU5DyUVjYD3sS3v8obdtYM0ud2bNb07gqjzMOP5qVzN7YS1wyvz1XSpZDprRA -QwNKw5cPcZJrWG8CAwEAAaOCAQYwggECMIHgBgNVHREEgdgwgdWCDHRlc3RuZXQu -dGVzdIIQYXBpLnRlc3RuZXQudGVzdIIRYXV0aC50ZXN0bmV0LnRlc3SCGHJhZmlr -aS1hdXRoLnRlc3RuZXQudGVzdIIbcmFmaWtpLWJhY2tlbmQudGVzdG5ldC50ZXN0 -ghxyYWZpa2ktZnJvbnRlbmQudGVzdG5ldC50ZXN0giByYWZpa2ktY2FyZC1zZXJ2 -aWNlLnRlc3RuZXQudGVzdIIYbW9ja2dhdGVodWIudGVzdG5ldC50ZXN0gglsb2Nh -bGhvc3SHBH8AAAEwHQYDVR0OBBYEFJ7UXeBz9oTZq2km4kkxZKvmuK1eMA0GCSqG -SIb3DQEBCwUAA4IBAQBu1O2eIVSCALkaG6CEZ6u5xxXlHf+cmVi82hdMw3inP0Zj -5DVis6a6QbHJ+9BkEEm0e8gZAvCQb1KPYDedHisb5DrCTxolqipD6kwTwgunc/Hf -dINZfTi/FYhk+JrXl0H8h1VBTWxt84VUcwltuHX5xGDeI8KohV+HIBlqZrl1uzWX -ktG8Bwl2tu2D7TwoVA0scchaH16ZbXgi32ZCyEsFBKPqLjsnUp+5Ympa2fiY+R9j -jDk7LNUxXz/FPCF25f4dPjSlI2GUndO85GPcg1svhhjcKxq81AxXJqeFHgC2noCj -OxKlwDbiXhtdGMjcj/82sHkmTa8APC7CdVhqI9cl +MIIDQjCCAiqgAwIBAgIUXm/E6cgCABT2IztGKP30TPzta4IwDQYJKoZIhvcNAQEL +BQAwPDEXMBUGA1UEAwwOKi50ZXN0bmV0LnRlc3QxFDASBgNVBAoMC0ludGVybGVk +Z2VyMQswCQYDVQQGEwJVUzAeFw0yNjA0MTMwODA2MzFaFw0zNjA0MTAwODA2MzFa +MDwxFzAVBgNVBAMMDioudGVzdG5ldC50ZXN0MRQwEgYDVQQKDAtJbnRlcmxlZGdl +cjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW +tzHOMbVmlvqubMfbUIBIp6MDtAJgcnNMBjjgNaWkYGmLDbvFofXtQII26C4FVE9v +3s1cLabj/Wg2vg6LmYyAIzLjUiLwPd/424vdP+gHTNq+VzSKGnYKZLpCbGo2xHVx +/YSgdSD7mm6BfOyhDhK0TlQcNi2I2keYghwvKhvpldjqWT2A3c9f6wJ5JaGeEw+s +oz5cRbM5LUr3c6N9aLqangFWUYcbWnTr77lSTKO/ImEDwBcHnPTPoicMDCQMv+BV +RZ11aYanIyYC8oauqBLWTckU4HGxfiEAbSlnZcqw9hjrz7poRrJHOB01BuR2449p +PEqDG7SGUeOJOoKXDlDlAgMBAAGjPDA6MBkGA1UdEQQSMBCCDioudGVzdG5ldC50 +ZXN0MB0GA1UdDgQWBBTQY4VhVMo6PuHgO6546+kGFWePPzANBgkqhkiG9w0BAQsF +AAOCAQEABftEKCy+AFQ30DQN5Q/ZZwAMKxdrjatQ3H4jf2Eddg4EEUu0EHBGOykf +2xtqzXKtaBoR+p2g6Hr8XyLhq9R22l8Gz8551o5lSqJugPC8Py4JgLvRBlZ5iZjS +MlcCT8ju9g758leUGb2X/vgkJycQnHo44TJX9xtiJKizmDRzwsfNVtVdrYQDlYZ1 +O/WxxZxQSxLai71vLfZ6nvwnD4HkUsJhAFvUgUdqyhU9qxbGCcAaVMYCao5l6vFx +lVcwqJlHvQkTVwlLJ1i/HIbcRClqi7iyKTjWp4gYyeULjXIJho98+eb1Nv1SOuG6 +9h7ro8TLLtcPI8Cw0cnk6/+8g6pCag== -----END CERTIFICATE----- diff --git a/local/config/certs/local.key b/local/config/certs/local.key index 60bec6d01..b1a300c74 100644 --- a/local/config/certs/local.key +++ b/local/config/certs/local.key @@ -1,28 +1,28 @@ -----BEGIN PRIVATE KEY----- -MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDO/uC5cOmomyQi -axc8ir5q18pGpciPeeZw9OD+mRyoSD2WADVj1HuP6bOWbKiRVFBtCk7ZHbhB6fnj -fLDkzUmflXEis3nKfvZTC01FDCljcQvJLYlm70u8Mbzh0f7TqQE0Es/1Uyf4xy3p -nFEbM4b/ERmvvRKyj2FsiSap4Woi8wdZY8sSChT0ASIMZxHRohWjSziFzznprnr/ -2ri+z/39/8iF2NnnIrBr0d2wSOGPRy9szRH7JoAZgONNjjZULijcjJ3IcZj+mFOQ -8lFY2A97Et7/KG3bWDNLndmzW9O4Ko8zDj+alcze2EtcMr89V0qWQ6a0QEMDSsOX -D3GSa1hvAgMBAAECggEAHYHgim7Z0CrgJCE8pxO8K0I8V9qAKaZzPtJEVJGCWqGE -WKK0+a3WOLX+33L5Nfuymf392XN5dblN4auVEo4KcGZUQgxwUHki0hnAAmzGZaI9 -ejM0mBOFVKbedG6ECKuEkWYby66hTxR4VgnuLJYpff4eZEVBVL+dtWQjun8jVdHU -ztroyjvCMXEyLvyQ7tPReEJLyH0+r60TkD9nMFiE6wXZHnczi2mjEPZ4a+Dg9koe -lBPcl3RDeCb5F8OBQbEV2z8t2YimeZQKSeG/R6DAVKNJYU1JNVzSG61itSftTv7m -/8I/J35Cyes5FmtC35d0HolvTR+Klj/u05fH2uxq0QKBgQDuc3yyobR7Nu62rUZg -gUkr2xVtxbvtJ/lcnH4/eMcDQq8ubUF8wV0lh6km9VlGofWLOE/LZ//u6F0fmqlJ -CqxnMcI7OLaypAmR5t+JwibC98nDlpFaIhBGrs1sLg+JJtZdm4m78vLUlfzUz+3m -QYrjIXV7i6IHUUBd9hcUWFPz5wKBgQDeOsGzhZxeXJsQ4CTVIs15S0yd6HJ2clbP -7UlKFbb+fTy0P1RBdrQXr3DcvJAO6mvSvyswGwO0X8HEhNn005OwnSleCfBoJsWQ -f3ZIE3/W0a85qaSSg5TBkYLOJOOVhhjsSr+T0fF6efYrvaEAjBR/eqUkk3RJ1zhg -Lfu2lZRmOQKBgFirFSmPu/89dBL15/+m08C9HQDO0IzlmnJ3tvJ/RPHPcDkBY6Ky -fKKiCaJ1BZegTiBQ9ksbBy6dtVM1PdHtaCKPfDxtYHKZUP2yLlmZmrRRU/OpH6+2 -jvrZsYWSszA7AueYGOWM+ANZKsUv9LT0lmLTZE5mo/+4lQjbo8Vq+vztAoGBAJF6 -14mFg0tGxoCyq4oX4XlxMPQC0sP1sB0oUp08P/Kz28SH3MmKQvVqdbEbhBcvoWxy -l3xDgxZWxYu4CNM8mue4yvbz/LzB/P3OY4llsn/X/yT5iHIdz4k0j/QRtCcThUdS -272SZ8ntA5m45yhri5O0n12lZjBcw1w7Xhg2LdMJAoGAD5CiVDexVqtC56uycAej -NGcIsPVq/f6uUtFeIr21FrloSpdhpjKmeQMKqvHtDgIafFcuuBHcULufWuqoe6x1 -RDiUQPp6Im2WrTZXReNpUJLW6y8Ev98VHzRoODVOzx1jl1A/ebJP71NsSU6Fabyz -Ok7w6RV3iXvbVYXIK/N6XX4= +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDWtzHOMbVmlvqu +bMfbUIBIp6MDtAJgcnNMBjjgNaWkYGmLDbvFofXtQII26C4FVE9v3s1cLabj/Wg2 +vg6LmYyAIzLjUiLwPd/424vdP+gHTNq+VzSKGnYKZLpCbGo2xHVx/YSgdSD7mm6B +fOyhDhK0TlQcNi2I2keYghwvKhvpldjqWT2A3c9f6wJ5JaGeEw+soz5cRbM5LUr3 +c6N9aLqangFWUYcbWnTr77lSTKO/ImEDwBcHnPTPoicMDCQMv+BVRZ11aYanIyYC +8oauqBLWTckU4HGxfiEAbSlnZcqw9hjrz7poRrJHOB01BuR2449pPEqDG7SGUeOJ +OoKXDlDlAgMBAAECggEAHxS6LDGkY2MYCw86l/vtcfb4QTU5wdnXaEofSg9h+Ksv +I/6bL4bcGVmk78tIvCNB83zyR7VhCvA3+XKmGt2hibvuphrR7WpbhUPMmXyiewoM +QRDRDWu6qhL+JlbYwjBKmvNakzqZSWqHtA1QGJk3qmuLP+E00rJcOk6dQ1OKYlO3 +fzI3TP3FGM1xaYie3nHps06QJteav8EP8MZNZyIdVeOJk3QwbH06uxkixGN7moZq +WoiO/E6MyL7qC3d0PRmELmQiU3WfX7YwOGNK6beeHhn9wfFhiWG4SgAJrw/CwJqS +wCn8MHVqPiP6rnltKFEMxmuPekQjKtWRUW+uLplcWQKBgQDyCz6drFRpvSiceK92 +C7npA+3IbIN4YkuF58YD1ZYyeAshztnmPqir/3tQNzFBBliji+CrRwIcP5ShD+Mb +mclfQG7gLLH8qkNVeNS1R1nf67ySbQ7w77g4wiemY2u+hTU+8saSucaSqWWy10Pi +emv7suEc1RxkhTRx1tv9VEyBLQKBgQDjGJAVWd/cgLXAC24cbmq23iHMw2wT52Gv +2v183DFs5n0AtRytv9YsyUv/VmZX673xtm0lSN8WrJj8z1hP21BUaQRMNt/fYuVq +dAPx2k0eAPSCNWXw94wZyCLG8Nv/fdppAdVQY9mzmBFxmzJrJZ7RRc5fmZEKQyr/ +/s3l4TmxmQKBgEiXNL1G/L4FnBNpYn4NwEDxC7RLTxagrDPJsipeOUCDnhsSlWkn +K6EB6zLAisYMqDLMdaIIlspwCxxOznbtpWYqxdX3sZ2sVqtgpLKFZp/wbEqh6JQ7 +4M0s9YVCVgL6omBxoTpJ+xLrOPPs+ZAH1TDUkgz6oRxIktT9clbEnHk1AoGBAMjX +KFY5rentStAVS8SJQoeH3IyjKCpSL+q+2gBbHLsa/OJrSnm/d0MUo8mmN8z6CHqE +w/J9iA8dhg/PsGKvq1N7rPlabpO5evuyrupuDlXCsnuVjhqWU6lZfqhCy84hF9BW +drkqFZbnnkXC48wu8U5TVjjmL4fL73OHfcEYd1XBAoGAO7fGgYMuaGJxq/+HN8bR +zrwMSUAUgDMyURJXL7bTYDsSls+WymH62Y50jgn2dlzhXBEWQEekB4pnCIkF1wwv +cFDphDincBlXn9SbjoO5+XWJfuoDv2zbS9r/SU3iEZt+TRYxTe0amItH5ti2ETMN +N59LW8n8httErHalVVRgsjI= -----END PRIVATE KEY----- diff --git a/local/config/san.cnf b/local/config/san.cnf index c4684357f..697d44066 100644 --- a/local/config/san.cnf +++ b/local/config/san.cnf @@ -6,7 +6,7 @@ x509_extensions = v3_req distinguished_name = dn [dn] -CN = testnet.test +CN = *.testnet.test O = Interledger C = US @@ -14,14 +14,5 @@ C = US subjectAltName = @alt_names [alt_names] -DNS.1 = testnet.test -DNS.2 = api.testnet.test -DNS.3 = auth.testnet.test -DNS.4 = rafiki-backend.testnet.test -DNS.5 = rafiki-frontend.testnet.test -DNS.6 = rafiki-card-service.testnet.test -DNS.7 = mockgatehub.testnet.test -DNS.8 = boutique.testnet.test -DNS.9 = api.boutique.testnet.test -DNS.10 = localhost -IP.1 = 127.0.0.1 \ No newline at end of file +DNS.1 = *.testnet.test +DNS.2 = testnet.test \ No newline at end of file diff --git a/local/rafiki.yaml b/local/rafiki.yaml index 887a3a411..86e833481 100644 --- a/local/rafiki.yaml +++ b/local/rafiki.yaml @@ -37,7 +37,7 @@ services: - rafiki-card-service.testnet.test:host-gateway - mockgatehub.testnet.test:host-gateway - boutique.testnet.test:host-gateway - - api.boutique.testnet.test:host-gateway + - boutique-api.testnet.test:host-gateway depends_on: - postgres labels: diff --git a/local/scripts/local-tools.sh b/local/scripts/local-tools.sh index 259343408..374d6838b 100644 --- a/local/scripts/local-tools.sh +++ b/local/scripts/local-tools.sh @@ -8,6 +8,7 @@ CERT_CRT="$CERT_DIR/local.crt" CERT_KEY="$CERT_DIR/local.key" COMPOSE_FILE="$LOCAL_DIR/docker-compose.yml" HOST_TAG="# generated by pnpm local:hosts" +CERT_NICKNAME="interledger-testnet-local" HOSTS=( "testnet.test" @@ -16,7 +17,7 @@ HOSTS=( "rafiki-backend.testnet.test" "rafiki-frontend.testnet.test" "boutique.testnet.test" - "api.boutique.testnet.test" + "boutique-api.testnet.test" "rafiki-card-service.testnet.test" "mockgatehub.testnet.test" ) @@ -26,43 +27,64 @@ compose() { } reload_traefik_if_running() { + echo "Checking Traefik status..." if compose ps --status running --services traefik 2>/dev/null | grep -q '^traefik$'; then echo "Reloading Traefik to pick up trusted cert..." compose restart traefik + echo "Traefik restarted." else echo "Traefik is not running; skipping reload." fi } run_certs() { + echo "Preparing TLS certificate directory: $CERT_DIR" mkdir -p "$CERT_DIR" if [[ -f "$CERT_CRT" && -f "$CERT_KEY" && "${FORCE_CERTS:-0}" != "1" ]]; then echo "TLS cert already exists. Reusing it (set FORCE_CERTS=1 to regenerate)." + echo " cert: $CERT_CRT" + echo " key : $CERT_KEY" return fi + if [[ "${FORCE_CERTS:-0}" == "1" ]]; then + echo "FORCE_CERTS=1 detected. Regenerating certificate and key." + else + echo "No existing TLS certificate found. Generating a new one." + fi + + echo "Generating certificate using SAN config: $LOCAL_DIR/config/san.cnf" + if [[ "${HEADLESS:-0}" == "1" ]]; then + echo "HEADLESS=1: using non-interactive OpenSSL subject values." openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ -keyout "$CERT_KEY" -out "$CERT_CRT" \ - -subj "/CN=testnet.test/O=Interledger/C=US" \ + -subj "/CN=*.testnet.test/O=Interledger/C=US" \ -config "$LOCAL_DIR/config/san.cnf" else + echo "HEADLESS not set: OpenSSL may prompt depending on your local config." openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ -keyout "$CERT_KEY" -out "$CERT_CRT" \ -config "$LOCAL_DIR/config/san.cnf" fi + + echo "Generated TLS assets:" + echo " cert: $CERT_CRT" + echo " key : $CERT_KEY" } run_all() { + echo "Starting full local stack setup..." run_certs + echo "Bringing up docker compose services from: $COMPOSE_FILE" compose up -d echo echo "Please open these ALL of these URLs in your browser and accept the self-signed certificates:" echo " - https://mockgatehub.testnet.test/health" echo " - https://api.testnet.test/health" - echo " - https://api.boutique.testnet.test/products" + echo " - https://boutique-api.testnet.test/products" echo " - https://rafiki-frontend.testnet.test" echo " - https://rafiki-backend.testnet.test/healthz" echo " - https://auth.testnet.test/healthz" @@ -71,40 +93,98 @@ run_all() { } run_hosts() { + echo "Updating /etc/hosts entries for testnet domains..." + echo "Removing previously managed entries..." sudo sed -i.bak '/# generated by make hosts/d' /etc/hosts sudo sed -i.bak '/# generated by pnpm local:hosts/d' /etc/hosts sudo rm -f /etc/hosts.bak for host in "${HOSTS[@]}"; do + echo "Adding host mapping: 127.0.0.1 $host" echo "127.0.0.1 $host $HOST_TAG" | sudo tee -a /etc/hosts >/dev/null done + + echo "Host aliases updated successfully." } run_trust_macos() { + echo "Applying certificate trust for macOS system keychain..." run_certs sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain "$CERT_CRT" + echo "macOS trust entry installed for: $CERT_CRT" reload_traefik_if_running } run_trust_linux() { + echo "Applying certificate trust for Linux..." run_certs + + echo "Installing cert into system CA store: /usr/local/share/ca-certificates/interledger-testnet-local.crt" sudo cp "$CERT_CRT" /usr/local/share/ca-certificates/interledger-testnet-local.crt + echo "Refreshing system CA certificates..." sudo update-ca-certificates - rm -rf "$HOME/.pki/nssdb" - mkdir -p "$HOME/.pki/nssdb" - certutil -d sql:"$HOME/.pki/nssdb" -N --empty-password - certutil -d sql:"$HOME/.pki/nssdb" -A -t "C,," -n "testnet.test" -i "$CERT_CRT" + if ! command -v certutil >/dev/null 2>&1; then + echo "certutil not found; install 'libnss3-tools' to auto-trust certs in Chrome/Chromium NSS stores." + reload_traefik_if_running + return + fi + + local nss_dbs=( + "$HOME/.pki/nssdb" + "$HOME/snap/chromium/current/.pki/nssdb" + "$HOME/snap/google-chrome/current/.pki/nssdb" + "$HOME/.var/app/com.google.Chrome/config/google-chrome/.pki/nssdb" + "$HOME/.var/app/org.chromium.Chromium/config/chromium/.pki/nssdb" + ) + local nss_pass_file + nss_pass_file="$(mktemp)" + printf '\n' >"$nss_pass_file" + + echo "Importing cert into NSS databases when accessible..." + + for db in "${nss_dbs[@]}"; do + # Always manage the default NSS DB; only manage app-specific DBs when present. + if [[ "$db" != "$HOME/.pki/nssdb" && ! -d "$db" ]]; then + echo "Skipping NSS DB (not present): $db" + continue + fi + + echo "Processing NSS DB: $db" + mkdir -p "$db" + + if [[ ! -f "$db/cert9.db" || ! -f "$db/key4.db" || ! -f "$db/pkcs11.txt" ]]; then + echo "Initializing NSS DB with empty password: $db" + if ! certutil -d sql:"$db" -N --empty-password >/dev/null 2>&1; then + echo "Skipping NSS DB (failed to initialize): $db" + continue + fi + fi + + certutil -d sql:"$db" -D -n "$CERT_NICKNAME" -f "$nss_pass_file" >/dev/null 2>&1 || true + + if certutil -d sql:"$db" -A -t "C,," -n "$CERT_NICKNAME" -i "$CERT_CRT" -f "$nss_pass_file" >/dev/null 2>&1; then + echo "Trusted cert in NSS DB: $db" + else + echo "Skipping NSS DB (password-protected or inaccessible): $db" + fi + done + + echo "Cleaning up temporary NSS password file." + rm -f "$nss_pass_file" reload_traefik_if_running } run_trust() { + echo "Applying trust configuration for local TLS certificate..." run_certs if [[ "$(uname -s)" == "Darwin" ]]; then + echo "Detected OS: macOS" run_trust_macos else + echo "Detected OS: Linux" run_trust_linux fi } diff --git a/local/wallet.yaml b/local/wallet.yaml index c02ce5376..5018b32d6 100644 --- a/local/wallet.yaml +++ b/local/wallet.yaml @@ -71,7 +71,7 @@ services: - rafiki-card-service.testnet.test:host-gateway - mockgatehub.testnet.test:host-gateway - boutique.testnet.test:host-gateway - - api.boutique.testnet.test:host-gateway + - boutique-api.testnet.test:host-gateway restart: always networks: - testnet diff --git a/packages/boutique/frontend/src/lib/constants.ts b/packages/boutique/frontend/src/lib/constants.ts index c47d7fc23..439c19d23 100644 --- a/packages/boutique/frontend/src/lib/constants.ts +++ b/packages/boutique/frontend/src/lib/constants.ts @@ -6,7 +6,7 @@ const getDefaultApiBaseUrl = () => { if (typeof window !== 'undefined') { if (window.location.hostname === 'boutique.testnet.test') { - return 'https://api.boutique.testnet.test' + return 'https://boutique-api.testnet.test' } } diff --git a/packages/wallet/backend/src/middleware/withSession.ts b/packages/wallet/backend/src/middleware/withSession.ts index fe97dca9d..20c16cf97 100644 --- a/packages/wallet/backend/src/middleware/withSession.ts +++ b/packages/wallet/backend/src/middleware/withSession.ts @@ -6,7 +6,12 @@ import { getIronSession } from 'iron-session' -// Determine cookie domain. Avoid setting Domain=localhost, browsers ignore it. +// Determine cookie domain. Avoid setting Domain=localhost — browsers ignore it. +// The wallet frontend is served on the bare RAFIKI_MONEY_FRONTEND_HOST domain +// (e.g. testnet.test) while the backend sits on a subdomain (api.testnet.test). +// A server is allowed to set cookies for any ancestor domain, so +// api.testnet.test can legitimately issue Domain=testnet.test and the browser +// will send it back to both testnet.test and api.testnet.test. let domain: string | undefined = undefined if (env.NODE_ENV === 'production' && env.GATEHUB_ENV === 'production') { domain = 'interledger.cards' diff --git a/packages/wallet/frontend/next.config.js b/packages/wallet/frontend/next.config.js index 361eec487..ad92564b7 100644 --- a/packages/wallet/frontend/next.config.js +++ b/packages/wallet/frontend/next.config.js @@ -20,6 +20,9 @@ if (!NEXT_PUBLIC_FEATURES_ENABLED) { const nextConfig = { output: 'standalone', poweredByHeader: false, + // ESLint 9.x removed options (useEslintrc, extensions) that Next.js 14 + // passes internally. Linting is handled separately via `pnpm lint:check`. + eslint: { ignoreDuringBuilds: true }, env: { NEXT_PUBLIC_BACKEND_URL: process.env.NEXT_PUBLIC_BACKEND_URL || 'http://localhost:3003', From cdba225ecb0a8e76a29370d791d3d16eaec9adfa Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Mon, 13 Apr 2026 12:12:44 +0200 Subject: [PATCH 21/51] wip: experimenting --- README.md | 4 +- local/.env.example | 2 +- local/boutique.yaml | 8 +- local/config/certs/boutique.crt | 20 +++++ local/config/certs/boutique.key | 28 ++++++ local/config/certs/local.crt | 32 +++---- local/config/certs/local.key | 52 +++++------ local/config/san-boutique.cnf | 18 ++++ local/config/{san.cnf => san-testnet.cnf} | 0 local/config/traefik/dynamic.yml | 7 +- local/rafiki.yaml | 4 +- local/scripts/local-tools.sh | 89 ++++++++++++------- local/scripts/rafiki-setup.js | 48 ++++++++++ local/scripts/run-package-with-local-stop.sh | 30 +++++++ local/wallet.yaml | 4 +- package.json | 8 +- .../boutique/frontend/src/lib/constants.ts | 8 +- packages/boutique/frontend/vite.config.ts | 2 +- 18 files changed, 270 insertions(+), 94 deletions(-) create mode 100644 local/config/certs/boutique.crt create mode 100644 local/config/certs/boutique.key create mode 100644 local/config/san-boutique.cnf rename local/config/{san.cnf => san-testnet.cnf} (100%) create mode 100644 local/scripts/run-package-with-local-stop.sh diff --git a/README.md b/README.md index 6fa1270c2..9b0b962cd 100644 --- a/README.md +++ b/README.md @@ -157,9 +157,9 @@ Upon executing the above command, the following will be available: - [https://mockgatehub.testnet.test](https://mockgatehub.testnet.test) - Mock GateHub service used for local funding and related sandbox flows. - [https://api.testnet.test](https://api.testnet.test) - Wallet backend API for the local Test Wallet environment. -- [https://boutique-api.testnet.test](https://boutique-api.testnet.test) - Boutique backend API serving product and checkout functionality. +- [https://api.boutique.test](https://api.boutique.test) - Boutique backend API serving product and checkout functionality. - [https://rafiki-frontend.testnet.test](https://rafiki-frontend.testnet.test) - Rafiki frontend UI. - [https://rafiki-backend.testnet.test](https://rafiki-backend.testnet.test) - Rafiki backend service. - [https://auth.testnet.test](https://auth.testnet.test) - Local authentication service. - [https://wallet.testnet.test](https://wallet.testnet.test) - Test Wallet frontend. -- [https://boutique.testnet.test](https://boutique.testnet.test) - Boutique frontend. +- [https://boutique.test](https://boutique.test) - Boutique frontend. diff --git a/local/.env.example b/local/.env.example index f7c558c3d..7c30ba2db 100644 --- a/local/.env.example +++ b/local/.env.example @@ -123,7 +123,7 @@ GATEHUB_CARD_PP_PREFIX=ILF # Boutique backend configuration (required) BOUTIQUE_BACKEND_PORT=3004 BOUTIQUE_BACKEND_DEBUG_PORT=9230 -BOUTIQUE_BACKEND_FRONTEND_URL=https://boutique.testnet.test +BOUTIQUE_BACKEND_FRONTEND_URL=https://boutique.test BOUTIQUE_BACKEND_DATABASE_URL=postgres://boutique_backend:boutique_backend@postgres-local/boutique_backend BOUTIQUE_REDIS_URL=redis://redis:6379/0 # Allow local self-signed TLS for Open Payments calls from boutique-backend container. diff --git a/local/boutique.yaml b/local/boutique.yaml index dc983bd78..1c93b365f 100644 --- a/local/boutique.yaml +++ b/local/boutique.yaml @@ -19,7 +19,7 @@ services: NODE_TLS_REJECT_UNAUTHORIZED: ${BOUTIQUE_NODE_TLS_REJECT_UNAUTHORIZED:-0} PORT: ${BOUTIQUE_BACKEND_PORT:-3004} DEBUG_PORT: ${BOUTIQUE_BACKEND_DEBUG_PORT:-9230} - FRONTEND_URL: ${BOUTIQUE_BACKEND_FRONTEND_URL:-https://boutique.testnet.test} + FRONTEND_URL: ${BOUTIQUE_BACKEND_FRONTEND_URL:-https://boutique.test} DATABASE_URL: ${BOUTIQUE_BACKEND_DATABASE_URL:-postgres://boutique_backend:boutique_backend@postgres-local/boutique_backend} PAYMENT_POINTER: ${BOUTIQUE_PAYMENT_POINTER:-replace-me} KEY_ID: ${BOUTIQUE_KEY_ID:-replace-me} @@ -33,8 +33,8 @@ services: - rafiki-frontend.testnet.test:host-gateway - rafiki-card-service.testnet.test:host-gateway - mockgatehub.testnet.test:host-gateway - - boutique.testnet.test:host-gateway - - boutique-api.testnet.test:host-gateway + - boutique.test:host-gateway + - api.boutique.test:host-gateway restart: always networks: - testnet @@ -44,7 +44,7 @@ services: labels: - traefik.enable=true - traefik.docker.network=testnet - - traefik.http.routers.boutique-backend.rule=Host(`boutique-api.testnet.test`) + - traefik.http.routers.boutique-backend.rule=Host(`api.boutique.test`) - traefik.http.routers.boutique-backend.entrypoints=websecure - traefik.http.routers.boutique-backend.tls=true - traefik.http.services.boutique-backend.loadbalancer.server.port=3004 diff --git a/local/config/certs/boutique.crt b/local/config/certs/boutique.crt new file mode 100644 index 000000000..862a48132 --- /dev/null +++ b/local/config/certs/boutique.crt @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIUOty1HifQz+iH2lG90DXKTSYHT5UwDQYJKoZIhvcNAQEL +BQAwPTEYMBYGA1UEAwwPKi5ib3V0aXF1ZS50ZXN0MRQwEgYDVQQKDAtJbnRlcmxl +ZGdlcjELMAkGA1UEBhMCVVMwHhcNMjYwNDEzMDkyNDU4WhcNMzYwNDEwMDkyNDU4 +WjA9MRgwFgYDVQQDDA8qLmJvdXRpcXVlLnRlc3QxFDASBgNVBAoMC0ludGVybGVk +Z2VyMQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ALa7Q9qHPSYCNLr0I+vCqV+5ZJK7AtHcGvNZieoapZua2KsqjKi+n36AygBVc7VY +eq9UIiIPHEZoIPujQU3pkNBL6FsC45xNa1w1oxhaB2+dJlJt58YsTV8bdmCdu6TF +YjKuCq9n7g1Hf/e1fysggYbeapUNz/U3HFSNiES07y0PR0zxVHJx6tukd7JW6c/E +qoz1mKph+9JBt21notA5EsAHGhIWUYVTxg3n+n0UoXj3+G0FlOM216+GtZ37Tubb +chsdNu/ffJEeBNvdqVp+2Ix1vjteeII30C4NUMpJdKQHNrfddCY8xjJNbh0la2tT +yq6u3pT6MojVmVxxUEIx/scCAwEAAaNMMEowKQYDVR0RBCIwIIIPKi5ib3V0aXF1 +ZS50ZXN0gg1ib3V0aXF1ZS50ZXN0MB0GA1UdDgQWBBQASYe3OmWdVBue4gSC+yH2 +WXbqcjANBgkqhkiG9w0BAQsFAAOCAQEApgYuVOx06c5lLM/bnWC23R85PWUIk0Zo +O7hrPQHcyQg8EiJa/rO36zVLK9fh7Aqzlw5JLNsT0H20hZFmgIjW5+iN1H16JxBO ++9XhKQdwh+OOcb17stj9dWMqggKTbwAQhs5/othgfQOgRmpo/43w+nUfrQeT+Kj+ +3NzuFO5YDfyVk8SIzbljZzv+sJl79UDzam2/88AUsLyMnvPbPGHwPMPF8Eb5DHcQ +rjL3rWzyfH4GjRTUaezP63/6MLV3xJoWZ5nBx+hK7aeepOHfzZgUEfKnvpQZeJ1b +u3tqHmbB+ABgXgW7HjFbvR5uU+Z+aMA2RKz162r4acsV01LdoEgsag== +-----END CERTIFICATE----- diff --git a/local/config/certs/boutique.key b/local/config/certs/boutique.key new file mode 100644 index 000000000..c8d334004 --- /dev/null +++ b/local/config/certs/boutique.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC2u0Pahz0mAjS6 +9CPrwqlfuWSSuwLR3BrzWYnqGqWbmtirKoyovp9+gMoAVXO1WHqvVCIiDxxGaCD7 +o0FN6ZDQS+hbAuOcTWtcNaMYWgdvnSZSbefGLE1fG3ZgnbukxWIyrgqvZ+4NR3/3 +tX8rIIGG3mqVDc/1NxxUjYhEtO8tD0dM8VRycerbpHeyVunPxKqM9ZiqYfvSQbdt +Z6LQORLABxoSFlGFU8YN5/p9FKF49/htBZTjNtevhrWd+07m23IbHTbv33yRHgTb +3alaftiMdb47XniCN9AuDVDKSXSkBza33XQmPMYyTW4dJWtrU8qurt6U+jKI1Zlc +cVBCMf7HAgMBAAECggEACe3I9RHOH8eU5+emIARWwa3IKjThJVgJWtmtpbvG7dqP +FVXdiLm63tvOnhAGln71Q5uVszYQ+j5kNGgdf0dGqBrHyFIy3eZTBBKiBwu1RbpL +P8VbB6iWl6ldWEiZzo0vFcPhLsC97ZjJ+kKxYz2D7Dkfn3O9rfxNnMaH9fvC1zba +f/bSDMjCUgk/y2+Sd7FFQBQ89jSmIs9FKJLF/p9WgTOT8N44ZEgOegUawrfR0yRj +FVCNsDui6LQLVQDau1ebINkF2QQhMvZCIs/6e+G5mIJeH+DnBwiypt6PtApSjb4C +ezow/eKTsjKIGMjonmfdyugiJCMaNdQIH+4u/r9F2QKBgQD+QIaE1Dw/0j04Hy69 +f9DaypSfrqWhmf3SC5nzZYp8Lcyq+PBVUI/4bi+xQxuZw5IBm4xe4zk4S4tWW8/f +lYKlUarqWkO/Dhrba570AxZXW8MVZeH0l2rngTaOGO7uuvd551jdWwW8B421jwwq +ksLvLjp7L2fq3N67dxF49LBMzQKBgQC3/N2wqXAt0bg1Y5x/eE0swnzKgrN8Qzw0 +woATPk1P3VjnsozE4v5pMC1ER1/dlXbFKeyYErsK13DEC3KyYH3KGCezBlVYNlhF +wgwmAMQO3lCOXFmVZBk06NoGurKLqC0f3J50IyrZOea8ahTWySWC8x/Xn5GuDEeH +2LMYS9V54wKBgD1N3aGFcwmIbc5sZl62xOscUX23JKS0dqkAtxwi7aNHf8PxxjEr +/arPFpzNK4iFyVyt3si6TP+v52bpOFQWvquR534eSZt1kTA64NbBL8/chktQh4zs +PZCYbUkR5fqWBjnUeG7XFajiwV53oV1aiboWEW/GXG4a13GoIgRiK2g5AoGAAsg5 +FfXJ83drYKtL74WDLT0Xo/xL+IIPxAB47VGQ27dOI9rIVCXWkQKgfJrTsUcUT7Dt +mfMWjvhpBR3jMx1QaaDp4MQkwDu6I/vmMSDr1gm4kB6HYEHuO6WVvmpOTtxRKl0s +rDbn6/b7LTgxbnoGLi+8+Ia6LjaTUlONib2D0d8CgYEAi5odyclgot108hz3vXj1 +dOs7YMxOhRZQbWveQPl7Mk0pbsJTr0C1a2f96YPxt0nXadxPdYVVKChCajjH7Ku0 +4CjDCdRZfCX/znOrlh7skNMSU5tkZAT0d5wSHklQ0F9I/z7uU9ozb+HaPPJEC6Bv +G5L8JyKtK019xfYDp5C+Nxg= +-----END PRIVATE KEY----- diff --git a/local/config/certs/local.crt b/local/config/certs/local.crt index a87a3f86b..ac36f296e 100644 --- a/local/config/certs/local.crt +++ b/local/config/certs/local.crt @@ -1,20 +1,20 @@ -----BEGIN CERTIFICATE----- -MIIDQjCCAiqgAwIBAgIUXm/E6cgCABT2IztGKP30TPzta4IwDQYJKoZIhvcNAQEL +MIIDUDCCAjigAwIBAgIUeKMJtdlyoKXSKkN2ZI/eqdxDkN4wDQYJKoZIhvcNAQEL BQAwPDEXMBUGA1UEAwwOKi50ZXN0bmV0LnRlc3QxFDASBgNVBAoMC0ludGVybGVk -Z2VyMQswCQYDVQQGEwJVUzAeFw0yNjA0MTMwODA2MzFaFw0zNjA0MTAwODA2MzFa +Z2VyMQswCQYDVQQGEwJVUzAeFw0yNjA0MTMwOTI0NThaFw0zNjA0MTAwOTI0NTha MDwxFzAVBgNVBAMMDioudGVzdG5ldC50ZXN0MRQwEgYDVQQKDAtJbnRlcmxlZGdl -cjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW -tzHOMbVmlvqubMfbUIBIp6MDtAJgcnNMBjjgNaWkYGmLDbvFofXtQII26C4FVE9v -3s1cLabj/Wg2vg6LmYyAIzLjUiLwPd/424vdP+gHTNq+VzSKGnYKZLpCbGo2xHVx -/YSgdSD7mm6BfOyhDhK0TlQcNi2I2keYghwvKhvpldjqWT2A3c9f6wJ5JaGeEw+s -oz5cRbM5LUr3c6N9aLqangFWUYcbWnTr77lSTKO/ImEDwBcHnPTPoicMDCQMv+BV -RZ11aYanIyYC8oauqBLWTckU4HGxfiEAbSlnZcqw9hjrz7poRrJHOB01BuR2449p -PEqDG7SGUeOJOoKXDlDlAgMBAAGjPDA6MBkGA1UdEQQSMBCCDioudGVzdG5ldC50 -ZXN0MB0GA1UdDgQWBBTQY4VhVMo6PuHgO6546+kGFWePPzANBgkqhkiG9w0BAQsF -AAOCAQEABftEKCy+AFQ30DQN5Q/ZZwAMKxdrjatQ3H4jf2Eddg4EEUu0EHBGOykf -2xtqzXKtaBoR+p2g6Hr8XyLhq9R22l8Gz8551o5lSqJugPC8Py4JgLvRBlZ5iZjS -MlcCT8ju9g758leUGb2X/vgkJycQnHo44TJX9xtiJKizmDRzwsfNVtVdrYQDlYZ1 -O/WxxZxQSxLai71vLfZ6nvwnD4HkUsJhAFvUgUdqyhU9qxbGCcAaVMYCao5l6vFx -lVcwqJlHvQkTVwlLJ1i/HIbcRClqi7iyKTjWp4gYyeULjXIJho98+eb1Nv1SOuG6 -9h7ro8TLLtcPI8Cw0cnk6/+8g6pCag== +cjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDO +UIC5ElPAhcYVwCj1VUdEDXai/8q18j13z2iAaJyLQPZDcP81QNQRGqQHEYzcu9nG +LKO5a5YT0vXNpB1W6W0LcZkHrfoyXKaEYJBmbbpkp+GpFFUlVcYORMq+POOXabG4 +U8JPZn5mihoJDRtfND6t5ETHfwODuzbwA/uD5GP+Yp8RAMUqQMqwJeEbHeDv5Niv +E66reMIMzBZqU1isyla+s6Rr0w+EusHu1Ud+z377Ey4Oj9cvIyFo22+Ttlln8xEZ +hBbOStNR1hBmREzt/OSQy/zWRNNW2tOhbR13Xr0cQvmN56vV61GAM0HgeNLLDf/q +0ixooNDcA7w6VwkJ1tJ1AgMBAAGjSjBIMCcGA1UdEQQgMB6CDioudGVzdG5ldC50 +ZXN0ggx0ZXN0bmV0LnRlc3QwHQYDVR0OBBYEFG0Mar1X/HQ0UzMbgirkbukBiLW9 +MA0GCSqGSIb3DQEBCwUAA4IBAQCTAYzgmP52NWbjtoiO+hHJKB7l2Xs5kIUq9jCw +6z2DPp0hihuvxinzouCKOPaW0yTapGUIoQM2/+cdy8pGeRTI5Vq8Ui/il84mmo+K +FSXhnjfIW+3djDi3LJuC68IUm3WFODBw9pAC6nDkYUahcUfDeXC/wrI9OAENEB91 +PGSmM+V2NnxL6rTWlVRLhtLf/RJTDanz/SCEA9dl9bGwbNQOHFBnWgML12nSxDZa +XGtMrDS6+eOk43KnrjTIgAHQfjvifR9JSXv0/pv3YrdgqHUQQ5z9xt52mSLmCu9B +6h8jIB7eR1my/MTUuPIWqbrFQIK1tBIl0riHyh0mbYtf5riD -----END CERTIFICATE----- diff --git a/local/config/certs/local.key b/local/config/certs/local.key index b1a300c74..52555c414 100644 --- a/local/config/certs/local.key +++ b/local/config/certs/local.key @@ -1,28 +1,28 @@ -----BEGIN PRIVATE KEY----- -MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDWtzHOMbVmlvqu -bMfbUIBIp6MDtAJgcnNMBjjgNaWkYGmLDbvFofXtQII26C4FVE9v3s1cLabj/Wg2 -vg6LmYyAIzLjUiLwPd/424vdP+gHTNq+VzSKGnYKZLpCbGo2xHVx/YSgdSD7mm6B -fOyhDhK0TlQcNi2I2keYghwvKhvpldjqWT2A3c9f6wJ5JaGeEw+soz5cRbM5LUr3 -c6N9aLqangFWUYcbWnTr77lSTKO/ImEDwBcHnPTPoicMDCQMv+BVRZ11aYanIyYC -8oauqBLWTckU4HGxfiEAbSlnZcqw9hjrz7poRrJHOB01BuR2449pPEqDG7SGUeOJ -OoKXDlDlAgMBAAECggEAHxS6LDGkY2MYCw86l/vtcfb4QTU5wdnXaEofSg9h+Ksv -I/6bL4bcGVmk78tIvCNB83zyR7VhCvA3+XKmGt2hibvuphrR7WpbhUPMmXyiewoM -QRDRDWu6qhL+JlbYwjBKmvNakzqZSWqHtA1QGJk3qmuLP+E00rJcOk6dQ1OKYlO3 -fzI3TP3FGM1xaYie3nHps06QJteav8EP8MZNZyIdVeOJk3QwbH06uxkixGN7moZq -WoiO/E6MyL7qC3d0PRmELmQiU3WfX7YwOGNK6beeHhn9wfFhiWG4SgAJrw/CwJqS -wCn8MHVqPiP6rnltKFEMxmuPekQjKtWRUW+uLplcWQKBgQDyCz6drFRpvSiceK92 -C7npA+3IbIN4YkuF58YD1ZYyeAshztnmPqir/3tQNzFBBliji+CrRwIcP5ShD+Mb -mclfQG7gLLH8qkNVeNS1R1nf67ySbQ7w77g4wiemY2u+hTU+8saSucaSqWWy10Pi -emv7suEc1RxkhTRx1tv9VEyBLQKBgQDjGJAVWd/cgLXAC24cbmq23iHMw2wT52Gv -2v183DFs5n0AtRytv9YsyUv/VmZX673xtm0lSN8WrJj8z1hP21BUaQRMNt/fYuVq -dAPx2k0eAPSCNWXw94wZyCLG8Nv/fdppAdVQY9mzmBFxmzJrJZ7RRc5fmZEKQyr/ -/s3l4TmxmQKBgEiXNL1G/L4FnBNpYn4NwEDxC7RLTxagrDPJsipeOUCDnhsSlWkn -K6EB6zLAisYMqDLMdaIIlspwCxxOznbtpWYqxdX3sZ2sVqtgpLKFZp/wbEqh6JQ7 -4M0s9YVCVgL6omBxoTpJ+xLrOPPs+ZAH1TDUkgz6oRxIktT9clbEnHk1AoGBAMjX -KFY5rentStAVS8SJQoeH3IyjKCpSL+q+2gBbHLsa/OJrSnm/d0MUo8mmN8z6CHqE -w/J9iA8dhg/PsGKvq1N7rPlabpO5evuyrupuDlXCsnuVjhqWU6lZfqhCy84hF9BW -drkqFZbnnkXC48wu8U5TVjjmL4fL73OHfcEYd1XBAoGAO7fGgYMuaGJxq/+HN8bR -zrwMSUAUgDMyURJXL7bTYDsSls+WymH62Y50jgn2dlzhXBEWQEekB4pnCIkF1wwv -cFDphDincBlXn9SbjoO5+XWJfuoDv2zbS9r/SU3iEZt+TRYxTe0amItH5ti2ETMN -N59LW8n8httErHalVVRgsjI= +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDOUIC5ElPAhcYV +wCj1VUdEDXai/8q18j13z2iAaJyLQPZDcP81QNQRGqQHEYzcu9nGLKO5a5YT0vXN +pB1W6W0LcZkHrfoyXKaEYJBmbbpkp+GpFFUlVcYORMq+POOXabG4U8JPZn5mihoJ +DRtfND6t5ETHfwODuzbwA/uD5GP+Yp8RAMUqQMqwJeEbHeDv5NivE66reMIMzBZq +U1isyla+s6Rr0w+EusHu1Ud+z377Ey4Oj9cvIyFo22+Ttlln8xEZhBbOStNR1hBm +REzt/OSQy/zWRNNW2tOhbR13Xr0cQvmN56vV61GAM0HgeNLLDf/q0ixooNDcA7w6 +VwkJ1tJ1AgMBAAECggEAANZez2F9qYhhd3EiOWyxL1uGob68CeUDztqup+bEy+Pl +m/x3bLXopnEfPVAa7EJu7dj8iSIgp8/xY3ZJEDM+WA+L+XYBT/cETgE+VMwZN5Ne +3RrSBabFeQVadU819UVejUr5vOzDkpL47BR7ifViU75bcRvY3c4CuRKrEKv6o+us +rtGO/ZuOA3SsjmORReQLiyFj0zeez33JcQxqL+ffebRfLnZikKyCK7YbeUliZeM4 +74PiTkysLGNJ8haeqqfaaTZyUp/eZcLfSkQUXYj8ZobtzfWcDzv5hOHrpA+gjk4A +jSRnpdBw08UvaAXbUvdYE6LiqfJW/SGMq3ONyUwPQQKBgQD2qhEQTDXWSlNle2Jl +A0sX4bIh3KCVH7AGv9+zfWxmFtHhJ+J8dQ3lZodsQ4irFWBd5lqMsbrY97Y3FKgF +R/if1O+M99mWItkK5kH86h8pvxD2udJWOGg+uz/UbUFfhxdOKvTCo2AxzPrmGpY3 +sRvbIp+bendXP67ZKk07vuLZ3QKBgQDWH3xmwKVN5DK2RSWskN2qf32ArLtGzbzY +95UaSkGp2CY0BsNQmTp8FIw8Di4b0OQQ5A0Ky2INrVUFIDIsZrIypeuaIVNiHHFs +WDHTRe8ddA9lfy0tY7U5m6YLdpvPNlFXhKzbg0zpmi+G4YqxaDhbqHl+zmYrM9+q +R6SFQXoteQKBgCK7V6O/12TRGmUTtosap5w5P2fdNQ9KYvLQWaNgab8GP49AmneD +0+0VPsRTzg6o9+TA5scgz3p1hsbCtdXoiG2ZAhILZCvrxDvwqCIApVqveKgFCkTx +tFwA6b/zklztHK75BXXSo1zfzARSggxdd9qnSWoPGHbElM4nUrCy9CZRAoGAQjkY +s3rPZUi3enHmVfmz5OBrQ1mozhwhVQU1gx0GM+5a2mphC9NoKCn+uTA1iHrRnnu5 +oOYIHGzIR76OZfcZE9sHA/Nco5JibfzU5B/T9UsI2/46TbhxuzBtaUw0oiCNhcDN +6VIxfmomWtP0niu6inaPpO1W4fO4MCTaODBpBhkCgYEA3Z1W71N55uoMR+G3DWB7 +NLP+TBCphlFlDmMeCOUEblO63FEFg+Vr4df+iCncMDa4y5xR0ymOPuZT9l9H7GMw +s2LYH8kvnwng7twfzrg0SVoGq/qXDznCE06yFzPbalX9Aiw/YHmnaMicaC39AKcL +7E3VxJHKRaqyMvuWouh+G+8= -----END PRIVATE KEY----- diff --git a/local/config/san-boutique.cnf b/local/config/san-boutique.cnf new file mode 100644 index 000000000..6d5d68676 --- /dev/null +++ b/local/config/san-boutique.cnf @@ -0,0 +1,18 @@ +[req] +default_bits = 2048 +prompt = no +default_md = sha256 +x509_extensions = v3_req +distinguished_name = dn + +[dn] +CN = *.boutique.test +O = Interledger +C = US + +[v3_req] +subjectAltName = @alt_names + +[alt_names] +DNS.1 = *.boutique.test +DNS.2 = boutique.test diff --git a/local/config/san.cnf b/local/config/san-testnet.cnf similarity index 100% rename from local/config/san.cnf rename to local/config/san-testnet.cnf diff --git a/local/config/traefik/dynamic.yml b/local/config/traefik/dynamic.yml index 22804286e..d9f0162bb 100644 --- a/local/config/traefik/dynamic.yml +++ b/local/config/traefik/dynamic.yml @@ -1,4 +1,9 @@ tls: + certificates: + - certFile: /certs/local.crt + keyFile: /certs/local.key + - certFile: /certs/boutique.crt + keyFile: /certs/boutique.key stores: default: defaultCertificate: @@ -8,7 +13,7 @@ tls: http: routers: boutique-frontend: - rule: Host(`boutique.testnet.test`) + rule: Host(`boutique.test`) entryPoints: - websecure tls: true diff --git a/local/rafiki.yaml b/local/rafiki.yaml index 86e833481..8edacf534 100644 --- a/local/rafiki.yaml +++ b/local/rafiki.yaml @@ -36,8 +36,8 @@ services: - rafiki-frontend.testnet.test:host-gateway - rafiki-card-service.testnet.test:host-gateway - mockgatehub.testnet.test:host-gateway - - boutique.testnet.test:host-gateway - - boutique-api.testnet.test:host-gateway + - boutique.test:host-gateway + - api.boutique.test:host-gateway depends_on: - postgres labels: diff --git a/local/scripts/local-tools.sh b/local/scripts/local-tools.sh index 374d6838b..00b7afcda 100644 --- a/local/scripts/local-tools.sh +++ b/local/scripts/local-tools.sh @@ -4,11 +4,14 @@ set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" LOCAL_DIR="$ROOT_DIR/local" CERT_DIR="$LOCAL_DIR/config/certs" -CERT_CRT="$CERT_DIR/local.crt" -CERT_KEY="$CERT_DIR/local.key" +TESTNET_CERT_CRT="$CERT_DIR/local.crt" +TESTNET_CERT_KEY="$CERT_DIR/local.key" +BOUTIQUE_CERT_CRT="$CERT_DIR/boutique.crt" +BOUTIQUE_CERT_KEY="$CERT_DIR/boutique.key" COMPOSE_FILE="$LOCAL_DIR/docker-compose.yml" HOST_TAG="# generated by pnpm local:hosts" -CERT_NICKNAME="interledger-testnet-local" +TESTNET_CERT_NICKNAME="interledger-testnet-local" +BOUTIQUE_CERT_NICKNAME="interledger-boutique-local" HOSTS=( "testnet.test" @@ -16,8 +19,8 @@ HOSTS=( "auth.testnet.test" "rafiki-backend.testnet.test" "rafiki-frontend.testnet.test" - "boutique.testnet.test" - "boutique-api.testnet.test" + "boutique.test" + "api.boutique.test" "rafiki-card-service.testnet.test" "mockgatehub.testnet.test" ) @@ -41,10 +44,17 @@ run_certs() { echo "Preparing TLS certificate directory: $CERT_DIR" mkdir -p "$CERT_DIR" - if [[ -f "$CERT_CRT" && -f "$CERT_KEY" && "${FORCE_CERTS:-0}" != "1" ]]; then - echo "TLS cert already exists. Reusing it (set FORCE_CERTS=1 to regenerate)." - echo " cert: $CERT_CRT" - echo " key : $CERT_KEY" + local has_testnet_cert=false + local has_boutique_cert=false + [[ -f "$TESTNET_CERT_CRT" && -f "$TESTNET_CERT_KEY" ]] && has_testnet_cert=true + [[ -f "$BOUTIQUE_CERT_CRT" && -f "$BOUTIQUE_CERT_KEY" ]] && has_boutique_cert=true + + if [[ "$has_testnet_cert" == true && "$has_boutique_cert" == true && "${FORCE_CERTS:-0}" != "1" ]]; then + echo "TLS certs already exist. Reusing them (set FORCE_CERTS=1 to regenerate)." + echo " testnet cert : $TESTNET_CERT_CRT" + echo " testnet key : $TESTNET_CERT_KEY" + echo " boutique cert: $BOUTIQUE_CERT_CRT" + echo " boutique key : $BOUTIQUE_CERT_KEY" return fi @@ -54,24 +64,37 @@ run_certs() { echo "No existing TLS certificate found. Generating a new one." fi - echo "Generating certificate using SAN config: $LOCAL_DIR/config/san.cnf" + echo "Generating certificates using SAN configs:" + echo " - $LOCAL_DIR/config/san-testnet.cnf" + echo " - $LOCAL_DIR/config/san-boutique.cnf" if [[ "${HEADLESS:-0}" == "1" ]]; then echo "HEADLESS=1: using non-interactive OpenSSL subject values." openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ - -keyout "$CERT_KEY" -out "$CERT_CRT" \ + -keyout "$TESTNET_CERT_KEY" -out "$TESTNET_CERT_CRT" \ -subj "/CN=*.testnet.test/O=Interledger/C=US" \ - -config "$LOCAL_DIR/config/san.cnf" + -config "$LOCAL_DIR/config/san-testnet.cnf" + + openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ + -keyout "$BOUTIQUE_CERT_KEY" -out "$BOUTIQUE_CERT_CRT" \ + -subj "/CN=*.boutique.test/O=Interledger/C=US" \ + -config "$LOCAL_DIR/config/san-boutique.cnf" else echo "HEADLESS not set: OpenSSL may prompt depending on your local config." openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ - -keyout "$CERT_KEY" -out "$CERT_CRT" \ - -config "$LOCAL_DIR/config/san.cnf" + -keyout "$TESTNET_CERT_KEY" -out "$TESTNET_CERT_CRT" \ + -config "$LOCAL_DIR/config/san-testnet.cnf" + + openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ + -keyout "$BOUTIQUE_CERT_KEY" -out "$BOUTIQUE_CERT_CRT" \ + -config "$LOCAL_DIR/config/san-boutique.cnf" fi echo "Generated TLS assets:" - echo " cert: $CERT_CRT" - echo " key : $CERT_KEY" + echo " testnet cert : $TESTNET_CERT_CRT" + echo " testnet key : $TESTNET_CERT_KEY" + echo " boutique cert: $BOUTIQUE_CERT_CRT" + echo " boutique key : $BOUTIQUE_CERT_KEY" } run_all() { @@ -81,15 +104,8 @@ run_all() { compose up -d echo - echo "Please open these ALL of these URLs in your browser and accept the self-signed certificates:" - echo " - https://mockgatehub.testnet.test/health" - echo " - https://api.testnet.test/health" - echo " - https://boutique-api.testnet.test/products" - echo " - https://rafiki-frontend.testnet.test" - echo " - https://rafiki-backend.testnet.test/healthz" - echo " - https://auth.testnet.test/healthz" + echo "Please open the following local testnet domains in your browser (with HTTPS):" echo " - https://testnet.test" - echo " - https://boutique.testnet.test" } run_hosts() { @@ -110,8 +126,10 @@ run_hosts() { run_trust_macos() { echo "Applying certificate trust for macOS system keychain..." run_certs - sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain "$CERT_CRT" - echo "macOS trust entry installed for: $CERT_CRT" + sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain "$TESTNET_CERT_CRT" + echo "macOS trust entry installed for: $TESTNET_CERT_CRT" + sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain "$BOUTIQUE_CERT_CRT" + echo "macOS trust entry installed for: $BOUTIQUE_CERT_CRT" reload_traefik_if_running } @@ -120,7 +138,9 @@ run_trust_linux() { run_certs echo "Installing cert into system CA store: /usr/local/share/ca-certificates/interledger-testnet-local.crt" - sudo cp "$CERT_CRT" /usr/local/share/ca-certificates/interledger-testnet-local.crt + sudo cp "$TESTNET_CERT_CRT" /usr/local/share/ca-certificates/interledger-testnet-local.crt + echo "Installing cert into system CA store: /usr/local/share/ca-certificates/interledger-boutique-local.crt" + sudo cp "$BOUTIQUE_CERT_CRT" /usr/local/share/ca-certificates/interledger-boutique-local.crt echo "Refreshing system CA certificates..." sudo update-ca-certificates @@ -161,12 +181,19 @@ run_trust_linux() { fi fi - certutil -d sql:"$db" -D -n "$CERT_NICKNAME" -f "$nss_pass_file" >/dev/null 2>&1 || true + certutil -d sql:"$db" -D -n "$TESTNET_CERT_NICKNAME" -f "$nss_pass_file" >/dev/null 2>&1 || true + certutil -d sql:"$db" -D -n "$BOUTIQUE_CERT_NICKNAME" -f "$nss_pass_file" >/dev/null 2>&1 || true + + if certutil -d sql:"$db" -A -t "C,," -n "$TESTNET_CERT_NICKNAME" -i "$TESTNET_CERT_CRT" -f "$nss_pass_file" >/dev/null 2>&1; then + echo "Trusted testnet cert in NSS DB: $db" + else + echo "Skipping testnet cert in NSS DB (password-protected or inaccessible): $db" + fi - if certutil -d sql:"$db" -A -t "C,," -n "$CERT_NICKNAME" -i "$CERT_CRT" -f "$nss_pass_file" >/dev/null 2>&1; then - echo "Trusted cert in NSS DB: $db" + if certutil -d sql:"$db" -A -t "C,," -n "$BOUTIQUE_CERT_NICKNAME" -i "$BOUTIQUE_CERT_CRT" -f "$nss_pass_file" >/dev/null 2>&1; then + echo "Trusted boutique cert in NSS DB: $db" else - echo "Skipping NSS DB (password-protected or inaccessible): $db" + echo "Skipping boutique cert in NSS DB (password-protected or inaccessible): $db" fi done diff --git a/local/scripts/rafiki-setup.js b/local/scripts/rafiki-setup.js index 8286dcaf4..d75e870c0 100644 --- a/local/scripts/rafiki-setup.js +++ b/local/scripts/rafiki-setup.js @@ -62,6 +62,10 @@ function buildEnv() { return { GRAPHQL_ENDPOINT: get('GRAPHQL_ENDPOINT', 'http://localhost:3011/graphql'), + RAFIKI_HEALTH_ENDPOINT: get( + 'RAFIKI_HEALTH_ENDPOINT', + 'http://localhost:3011/healthz' + ), ADMIN_API_SECRET: get('ADMIN_API_SECRET', 'secret-key'), ADMIN_SIGNATURE_VERSION: get('ADMIN_SIGNATURE_VERSION', '1'), OPERATOR_TENANT_ID: get( @@ -79,6 +83,49 @@ function buildEnv() { } } +function sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)) +} + +async function waitForRafikiHealth(env) { + const maxAttempts = 30 + + for (let attempt = 1; attempt <= maxAttempts; attempt++) { + console.log( + `Checking Rafiki health (${attempt}/${maxAttempts}): ${env.RAFIKI_HEALTH_ENDPOINT}` + ) + + try { + const response = await fetch(env.RAFIKI_HEALTH_ENDPOINT, { + method: 'GET', + signal: AbortSignal.timeout(1000) + }) + + if (!response.ok) { + console.log(`Health check returned HTTP ${response.status}, retrying...`) + } else { + const body = (await response.text()).trim() + if (body.toUpperCase() === 'OK') { + console.log('Rafiki health check passed') + return + } + console.log(`Health check returned '${body}', waiting for 'OK'...`) + } + } catch (err) { + console.log(`Health check failed: ${err.message}`) + } + + if (attempt < maxAttempts) { + console.log('Rafiki not ready yet, retrying in 1 second...') + await sleep(1000) + } + } + + throw new Error( + `Rafiki health endpoint did not return OK within ${maxAttempts} seconds` + ) +} + function signRequest({ query, variables, operationName }, env, timestamp) { const payload = `${timestamp}.${canonicalizeAndStringify({ variables: variables ?? {}, @@ -392,6 +439,7 @@ async function ensureLiquidity(env) { ;(async function main() { const env = buildEnv() console.log('Rafiki admin endpoint:', env.GRAPHQL_ENDPOINT) + await waitForRafikiHealth(env) await ensureTenant(env) await ensureAssets(env) await ensureLiquidity(env) diff --git a/local/scripts/run-package-with-local-stop.sh b/local/scripts/run-package-with-local-stop.sh new file mode 100644 index 000000000..267e7e50d --- /dev/null +++ b/local/scripts/run-package-with-local-stop.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" +COMPOSE_FILE="$ROOT_DIR/local/docker-compose.yml" + +if [[ $# -lt 2 ]]; then + echo "Usage: $0 [command] [args...]" >&2 + echo "Example: $0 @wallet/frontend wallet-frontend,wallet-backend dev" >&2 + exit 1 +fi + +PACKAGE_FILTER="$1" +SERVICES_CSV="$2" +shift 2 + +IFS=',' read -r -a SERVICES <<<"$SERVICES_CSV" + +# Only stop compose services on the host; inside containers this would stop the +# service itself and cause restart loops. +if [[ ! -f "/.dockerenv" ]]; then + # Free host ports used by local package commands without taking down infra services. + docker compose -f "$COMPOSE_FILE" stop "${SERVICES[@]}" >/dev/null 2>&1 || true +fi + +if [[ $# -eq 0 ]]; then + set -- dev +fi + +exec pnpm --filter "$PACKAGE_FILTER" -- "$@" diff --git a/local/wallet.yaml b/local/wallet.yaml index 5018b32d6..fd62bbd44 100644 --- a/local/wallet.yaml +++ b/local/wallet.yaml @@ -70,8 +70,8 @@ services: - rafiki-frontend.testnet.test:host-gateway - rafiki-card-service.testnet.test:host-gateway - mockgatehub.testnet.test:host-gateway - - boutique.testnet.test:host-gateway - - boutique-api.testnet.test:host-gateway + - boutique.test:host-gateway + - api.boutique.test:host-gateway restart: always networks: - testnet diff --git a/package.json b/package.json index b9934a36f..40d812bbe 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/interledger/testnet" }, "scripts": { - "boutique:backend": "pnpm --filter @boutique/backend --", + "boutique:backend": "bash ./local/scripts/run-package-with-local-stop.sh @boutique/backend boutique-backend", "boutique:frontend": "pnpm --filter @boutique/frontend --", "build": "pnpm -r build", "checks": "pnpm prettier:check && pnpm lint:check", @@ -26,7 +26,6 @@ "compose": "docker compose -f ./local/docker-compose.yml", "local:help": "bash ./local/scripts/local-tools.sh help", "local:all": "bash ./local/scripts/local-tools.sh all", - "local:all-nowatch": "pnpm local:all", "local:build": "pnpm compose build", "local:rebuild": "pnpm compose build --no-cache", "local:up": "pnpm compose up -d --build", @@ -38,14 +37,15 @@ "local:certs": "bash ./local/scripts/local-tools.sh certs", "local:hosts": "bash ./local/scripts/local-tools.sh hosts", "local:trust": "bash ./local/scripts/local-tools.sh trust", + "local:setup": "pnpm local:hosts && pnpm local:trust && pnpm local:all && pnpm local:rafiki-assets", "local:trust:macos": "bash ./local/scripts/local-tools.sh trust-macos", "local:trust:linux": "bash ./local/scripts/local-tools.sh trust-linux", "local:rafiki-assets": "node ./local/scripts/rafiki-setup.js", "preinstall": "npx only-allow pnpm", "prettier:write": "prettier --config \".prettierrc.js\" --write .", "prettier:check": "prettier --config \".prettierrc.js\" --check .", - "wallet:backend": "pnpm --filter @wallet/backend --", - "wallet:frontend": "pnpm --filter @wallet/frontend --" + "wallet:backend": "bash ./local/scripts/run-package-with-local-stop.sh @wallet/backend wallet-backend", + "wallet:frontend": "bash ./local/scripts/run-package-with-local-stop.sh @wallet/frontend wallet-frontend" }, "devDependencies": { "@eslint/compat": "^1.4.0", diff --git a/packages/boutique/frontend/src/lib/constants.ts b/packages/boutique/frontend/src/lib/constants.ts index 439c19d23..a7f0e42bf 100644 --- a/packages/boutique/frontend/src/lib/constants.ts +++ b/packages/boutique/frontend/src/lib/constants.ts @@ -1,18 +1,18 @@ // Resolve the boutique API base URL at runtime based on the current hostname. // In the local Docker environment the frontend is served behind Traefik at -// "boutique.testnet.test", so we route API calls to its TLS-proxied backend. +// "boutique.test", so we route API calls to its TLS-proxied backend. // Outside that environment (plain localhost dev) we fall back to the default // local backend port. const getDefaultApiBaseUrl = () => { if (typeof window !== 'undefined') { - if (window.location.hostname === 'boutique.testnet.test') { - return 'https://boutique-api.testnet.test' + if (window.location.hostname === 'boutique.test') { + return 'https://api.boutique.test' } } console.warn( 'Boutique API: falling back to http://localhost:3004. ' + - 'Set VITE_API_BASE_URL or access via boutique.testnet.test for the Docker environment.' + 'Set VITE_API_BASE_URL or access via boutique.test for the Docker environment.' ) return 'http://localhost:3004' } diff --git a/packages/boutique/frontend/vite.config.ts b/packages/boutique/frontend/vite.config.ts index dee0ae557..0d8d70b4c 100644 --- a/packages/boutique/frontend/vite.config.ts +++ b/packages/boutique/frontend/vite.config.ts @@ -18,7 +18,7 @@ export default defineConfig({ ], server: { host: '0.0.0.0', - allowedHosts: ['boutique.testnet.test'], + allowedHosts: ['boutique.test'], port: 4004 }, resolve: { From 66c72325455b2e7e959b5ea1085a8052f8f9065b Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Mon, 13 Apr 2026 13:31:13 +0200 Subject: [PATCH 22/51] refactor: wallet and boutique now run on host --- README.md | 19 ++- local/.env.example | 82 +++-------- local/boutique.yaml | 50 ------- local/config/traefik/dynamic.yml | 36 +++++ local/docker-compose.yml | 2 - local/mockgatehub.yaml | 4 +- local/rafiki.yaml | 14 +- local/scripts/run-package-with-local-stop.sh | 30 ----- local/wallet.yaml | 127 ------------------ package.json | 12 +- packages/boutique/backend/.env.example | 9 ++ packages/boutique/backend/package.json | 4 +- packages/boutique/backend/src/config/env.ts | 5 +- packages/boutique/backend/src/container.ts | 3 +- packages/boutique/frontend/.env.example | 4 +- .../boutique/frontend/src/lib/constants.ts | 8 +- packages/wallet/backend/.env.example | 44 ++++++ packages/wallet/backend/package.json | 4 +- packages/wallet/backend/src/config/env.ts | 2 +- packages/wallet/frontend/.env.example | 8 ++ packages/wallet/frontend/next.config.js | 11 +- .../wallet/frontend/src/lib/httpClient.ts | 2 +- 22 files changed, 175 insertions(+), 305 deletions(-) delete mode 100644 local/boutique.yaml delete mode 100644 local/scripts/run-package-with-local-stop.sh delete mode 100644 local/wallet.yaml create mode 100644 packages/boutique/backend/.env.example create mode 100644 packages/wallet/backend/.env.example create mode 100644 packages/wallet/frontend/.env.example diff --git a/README.md b/README.md index 9b0b962cd..016752caf 100644 --- a/README.md +++ b/README.md @@ -138,21 +138,32 @@ pnpm local:rafiki-assets # run Rafiki asset setup script Navigate to the project's root directory and execute: ```sh -pnpm dev #this will start the project in hot reload mode for backend containers. Frontend containers have hot reload functionality enabled on all dev commads +pnpm dev # starts core infra in Docker and runs wallet/boutique apps on your machine with local hot reload ``` other options to start the local env are: ```sh -pnpm dev:debug #backend containers will not have hot reload feature enabled but will expose and have node `--inspect` option set with wallet container debug port set to 9229 and boutique port set to 9230. Once the containers are running, you can connect your debugger (e.g., Chrome DevTools, VS Code) +pnpm dev:debug # same app workflow as pnpm dev, but starts the core Docker stack with the debug profile ``` and: ```sh -pnpm dev:lite #backend containers will build and run the builds, no debug and no hot reload for these containers +pnpm dev:lite # same app workflow as pnpm dev, but starts the core Docker stack with the lite profile ``` +Application env files are package-local: + +```sh +packages/wallet/backend/.env +packages/wallet/frontend/.env.local +packages/boutique/backend/.env +packages/boutique/frontend/.env.local +``` + +Example files are committed next to each app as `.env.example`. + Upon executing the above command, the following will be available: - [https://mockgatehub.testnet.test](https://mockgatehub.testnet.test) - Mock GateHub service used for local funding and related sandbox flows. @@ -161,5 +172,5 @@ Upon executing the above command, the following will be available: - [https://rafiki-frontend.testnet.test](https://rafiki-frontend.testnet.test) - Rafiki frontend UI. - [https://rafiki-backend.testnet.test](https://rafiki-backend.testnet.test) - Rafiki backend service. - [https://auth.testnet.test](https://auth.testnet.test) - Local authentication service. -- [https://wallet.testnet.test](https://wallet.testnet.test) - Test Wallet frontend. +- [https://testnet.test](https://testnet.test) - Test Wallet frontend. - [https://boutique.test](https://boutique.test) - Boutique frontend. diff --git a/local/.env.example b/local/.env.example index 7c30ba2db..4abc291d6 100644 --- a/local/.env.example +++ b/local/.env.example @@ -9,16 +9,9 @@ # General build / dev flags # --------------------------------------------------------------------------- -# DEV_MODE — Controls how the wallet and boutique backend containers start. -# true (default) — hot-reload via nodemon; source changes restart the server -# automatically. Best for day-to-day development. -# debug — runs the pre-built server with the Node inspector open on -# DEBUG_PORT (default 9229 / 9230), so you can attach a -# debugger from your IDE. -# lite — runs the pre-built server directly (no watcher, no -# debugger). Useful for quick smoke-testing of production- -# like behaviour without the overhead of a file watcher. -# Note: frontend containers always run in dev/HMR mode regardless of this flag. +# DEV_MODE — Controls how core infra containers start when applicable. +# Wallet and boutique apps run on the host machine and are configured via +# package-local env files under packages/*. DEV_MODE=true # NODE_ENV — Standard Node.js environment flag, passed to every service. @@ -32,15 +25,15 @@ DEV_MODE=true # For local development you almost never need to change this. NODE_ENV=development -# Redis URL used by local services. +# Redis URL used by local core services. REDIS_URL=redis://redis:6379/0 -# Wallet Backend secrets and config +# Shared secrets used by the core local stack. AUTH_IDENTITY_SERVER_SECRET=dev_identity_server_secret -RAFIKI_MONEY_FRONTEND_HOST=testnet.test -SENDGRID_API_KEY= -FROM_EMAIL= -SEND_EMAIL=false +ADMIN_API_SECRET=secret-key +ADMIN_SIGNATURE_VERSION=1 +OPERATOR_TENANT_ID=f829c064-762a-4430-ac5d-7af5df198551 +RAFIKI_SIGNATURE_SECRET=327132b5-99e9-4eb8-8a25-2b7d7738ece1 # --------------------------------------------------------------------------- # GateHub integration @@ -61,6 +54,8 @@ SEND_EMAIL=false # GATEHUB_API_BASE_URL is used by the backend for signed GateHub API calls. # The three GATEHUB_IFRAME_*_URL values are required and used for browser-facing # iframe URLs. Backend startup fails if any of them is missing. +# Keep these credentials aligned with packages/wallet/backend/.env when using +# the host-run wallet backend against MockGatehub. GATEHUB_API_BASE_URL=http://mockgatehub:8080 GATEHUB_ENV=sandbox GATEHUB_IFRAME_MANAGED_RAMP_URL=http://localhost:8080 @@ -109,40 +104,6 @@ GATEHUB_CARD_APP_ID=mock-card-app-id # GATEHUB_ORG_ID= # GATEHUB_CARD_APP_ID= -# Wallet backend rate limits and product codes (optional) -WALLET_BACKEND_OPEN_PAYMENTS_HOST=https://rafiki-backend.testnet.test -# Allow local self-signed TLS for wallet-backend calls to *.testnet.test. -WALLET_NODE_TLS_REJECT_UNAUTHORIZED=0 -RATE_LIMIT=false -RATE_LIMIT_LEVEL=LAX -GATEHUB_ACCOUNT_PRODUCT_CODE=DEFAULT -GATEHUB_CARD_PRODUCT_CODE=DEFAULT -GATEHUB_NAME_ON_CARD=TEST USER -GATEHUB_CARD_PP_PREFIX=ILF - -# Boutique backend configuration (required) -BOUTIQUE_BACKEND_PORT=3004 -BOUTIQUE_BACKEND_DEBUG_PORT=9230 -BOUTIQUE_BACKEND_FRONTEND_URL=https://boutique.test -BOUTIQUE_BACKEND_DATABASE_URL=postgres://boutique_backend:boutique_backend@postgres-local/boutique_backend -BOUTIQUE_REDIS_URL=redis://redis:6379/0 -# Allow local self-signed TLS for Open Payments calls from boutique-backend container. -BOUTIQUE_NODE_TLS_REJECT_UNAUTHORIZED=0 - -# Card service links (only used when cards are enabled) -CARD_DATA_HREF=http://rafiki-card-service:3007/card-data -CARD_PIN_HREF=http://rafiki-card-service:3007/card-pin - -# Stripe (optional for local) -STRIPE_SECRET_KEY= -STRIPE_WEBHOOK_SECRET= -USE_STRIPE=false - -# Admin/shared IDs and secrets -OPERATOR_TENANT_ID=f829c064-762a-4430-ac5d-7af5df198551 -ADMIN_API_SECRET=secret-key -RAFIKI_SIGNATURE_SECRET=327132b5-99e9-4eb8-8a25-2b7d7738ece1 - # Rafiki public URL defaults for local wallet-address generation RAFIKI_BACKEND_OPEN_PAYMENTS_URL=https://rafiki-backend.testnet.test RAFIKI_BACKEND_WALLET_ADDRESS_URL=https://rafiki-backend.testnet.test/.well-known/pay @@ -153,16 +114,13 @@ RAFIKI_BACKEND_TRUST_PROXY=true # Allow local self-signed TLS for rafiki-auth when fetching wallet-address jwks from *.testnet.test. RAFIKI_AUTH_NODE_TLS_REJECT_UNAUTHORIZED=0 -# Boutique Open Payments credentials (required) -# Set these values explicitly for boutique backend. -BOUTIQUE_PAYMENT_POINTER= -BOUTIQUE_KEY_ID= -BOUTIQUE_PRIVATE_KEY= +# Core services that call the wallet backend should target the host machine. +RAFIKI_BACKEND_WEBHOOK_URL=http://host.docker.internal:3003/webhooks +RAFIKI_BACKEND_EXCHANGE_RATES_URL=http://host.docker.internal:3003/rates +MOCKGATEHUB_WEBHOOK_URL=http://host.docker.internal:3003/gatehub-webhooks -# Wallet Frontend public envs -NEXT_PUBLIC_BACKEND_URL=http://localhost:3003 -NEXT_PUBLIC_AUTH_HOST=http://localhost:3006 -NEXT_PUBLIC_OPEN_PAYMENTS_HOST=http://localhost:3010 -NEXT_PUBLIC_GATEHUB_ENV=sandbox -NEXT_PUBLIC_THEME=light -NEXT_PUBLIC_FEATURES_ENABLED=false +# Wallet and boutique app env files now live here: +# - packages/wallet/backend/.env(.example) +# - packages/wallet/frontend/.env.local(.example) +# - packages/boutique/backend/.env(.example) +# - packages/boutique/frontend/.env.local(.example) diff --git a/local/boutique.yaml b/local/boutique.yaml deleted file mode 100644 index 1c93b365f..000000000 --- a/local/boutique.yaml +++ /dev/null @@ -1,50 +0,0 @@ -services: - # Boutique - boutique-backend: - container_name: boutique-backend-local - build: - context: ../ - args: - DEV_MODE: ${DEV_MODE:-true} - dockerfile: ./packages/boutique/backend/Dockerfile.dev - depends_on: - - postgres - - rafiki-backend - - redis - volumes: - - ../packages/boutique/backend:/home/testnet/packages/boutique/backend - - ../packages/boutique/shared:/home/testnet/packages/boutique/shared - environment: - NODE_ENV: ${NODE_ENV:-development} - NODE_TLS_REJECT_UNAUTHORIZED: ${BOUTIQUE_NODE_TLS_REJECT_UNAUTHORIZED:-0} - PORT: ${BOUTIQUE_BACKEND_PORT:-3004} - DEBUG_PORT: ${BOUTIQUE_BACKEND_DEBUG_PORT:-9230} - FRONTEND_URL: ${BOUTIQUE_BACKEND_FRONTEND_URL:-https://boutique.test} - DATABASE_URL: ${BOUTIQUE_BACKEND_DATABASE_URL:-postgres://boutique_backend:boutique_backend@postgres-local/boutique_backend} - PAYMENT_POINTER: ${BOUTIQUE_PAYMENT_POINTER:-replace-me} - KEY_ID: ${BOUTIQUE_KEY_ID:-replace-me} - PRIVATE_KEY: ${BOUTIQUE_PRIVATE_KEY:-replace-me} - REDIS_URL: ${BOUTIQUE_REDIS_URL:-redis://redis:6379/4} - extra_hosts: - - testnet.test:host-gateway - - api.testnet.test:host-gateway - - auth.testnet.test:host-gateway - - rafiki-backend.testnet.test:host-gateway - - rafiki-frontend.testnet.test:host-gateway - - rafiki-card-service.testnet.test:host-gateway - - mockgatehub.testnet.test:host-gateway - - boutique.test:host-gateway - - api.boutique.test:host-gateway - restart: always - networks: - - testnet - ports: - - '3004:3004' - - '9230:9230' - labels: - - traefik.enable=true - - traefik.docker.network=testnet - - traefik.http.routers.boutique-backend.rule=Host(`api.boutique.test`) - - traefik.http.routers.boutique-backend.entrypoints=websecure - - traefik.http.routers.boutique-backend.tls=true - - traefik.http.services.boutique-backend.loadbalancer.server.port=3004 diff --git a/local/config/traefik/dynamic.yml b/local/config/traefik/dynamic.yml index d9f0162bb..5beda1113 100644 --- a/local/config/traefik/dynamic.yml +++ b/local/config/traefik/dynamic.yml @@ -12,6 +12,20 @@ tls: http: routers: + wallet-frontend: + rule: Host(`testnet.test`) + entryPoints: + - websecure + tls: true + service: wallet-frontend + + wallet-backend: + rule: Host(`api.testnet.test`) + entryPoints: + - websecure + tls: true + service: wallet-backend + boutique-frontend: rule: Host(`boutique.test`) entryPoints: @@ -19,8 +33,30 @@ http: tls: true service: boutique-frontend + boutique-backend: + rule: Host(`api.boutique.test`) + entryPoints: + - websecure + tls: true + service: boutique-backend + services: + wallet-frontend: + loadBalancer: + servers: + - url: http://host.docker.internal:4003 + + wallet-backend: + loadBalancer: + servers: + - url: http://host.docker.internal:3003 + boutique-frontend: loadBalancer: servers: - url: http://host.docker.internal:4004 + + boutique-backend: + loadBalancer: + servers: + - url: http://host.docker.internal:3004 diff --git a/local/docker-compose.yml b/local/docker-compose.yml index d20e1f8d5..6e99302f3 100644 --- a/local/docker-compose.yml +++ b/local/docker-compose.yml @@ -4,8 +4,6 @@ include: - redis.yaml - mockgatehub.yaml - rafiki.yaml - - wallet.yaml - - boutique.yaml - mailslurper.yaml networks: diff --git a/local/mockgatehub.yaml b/local/mockgatehub.yaml index fe0026908..b01d921a8 100644 --- a/local/mockgatehub.yaml +++ b/local/mockgatehub.yaml @@ -9,13 +9,15 @@ services: MOCKGATEHUB_REDIS_URL: ${MOCKGATEHUB_REDIS_URL:-redis://redis:6379/1} MOCKGATEHUB_REDIS_DB: ${MOCKGATEHUB_REDIS_DB:-1} MOCKGATEHUB_VALID_CREDENTIALS: ${GATEHUB_ACCESS_KEY:-local-test-app-id}:${GATEHUB_SECRET_KEY:-local-test-app-secret} - WEBHOOK_URL: ${MOCKGATEHUB_WEBHOOK_URL:-http://wallet-backend:3003/gatehub-webhooks} + WEBHOOK_URL: ${MOCKGATEHUB_WEBHOOK_URL:-http://host.docker.internal:3003/gatehub-webhooks} WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET:-6d6f636b5f776562686f6f6b5f736563726574} depends_on: - redis restart: always networks: - testnet + extra_hosts: + - host.docker.internal:host-gateway healthcheck: test: ['CMD', 'curl', '-f', 'http://localhost:8080/health'] interval: 10s diff --git a/local/rafiki.yaml b/local/rafiki.yaml index 8edacf534..c7ddcafed 100644 --- a/local/rafiki.yaml +++ b/local/rafiki.yaml @@ -9,6 +9,7 @@ services: ports: - '3006:3006' - '3008:3008' + - '3009:3009' environment: AUTH_PORT: ${RAFIKI_AUTH_PORT:-3006} INTROSPECTION_PORT: ${RAFIKI_AUTH_INTROSPECTION_PORT:-3007} @@ -43,9 +44,16 @@ services: labels: - traefik.enable=true - traefik.docker.network=testnet + - traefik.http.routers.rafiki-auth-grant.rule=Host(`auth.testnet.test`) && PathPrefix(`/grant`) + - traefik.http.routers.rafiki-auth-grant.entrypoints=websecure + - traefik.http.routers.rafiki-auth-grant.tls=true + - traefik.http.routers.rafiki-auth-grant.priority=100 + - traefik.http.routers.rafiki-auth-grant.service=rafiki-auth-grant + - traefik.http.services.rafiki-auth-grant.loadbalancer.server.port=3009 - traefik.http.routers.rafiki-auth.rule=Host(`auth.testnet.test`) - traefik.http.routers.rafiki-auth.entrypoints=websecure - traefik.http.routers.rafiki-auth.tls=true + - traefik.http.routers.rafiki-auth.service=rafiki-auth - traefik.http.services.rafiki-auth.loadbalancer.server.port=3006 rafiki-backend: @@ -81,10 +89,10 @@ services: OPEN_PAYMENTS_URL: ${RAFIKI_BACKEND_OPEN_PAYMENTS_URL:-https://rafiki-backend.testnet.test} REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} WALLET_ADDRESS_URL: ${RAFIKI_BACKEND_WALLET_ADDRESS_URL:-https://rafiki-backend.testnet.test/.well-known/pay} - WEBHOOK_URL: ${RAFIKI_BACKEND_WEBHOOK_URL:-http://wallet-backend:3003/webhooks} + WEBHOOK_URL: ${RAFIKI_BACKEND_WEBHOOK_URL:-http://host.docker.internal:3003/webhooks} WEBHOOK_TIMEOUT: ${RAFIKI_BACKEND_WEBHOOK_TIMEOUT:-60000} SIGNATURE_SECRET: ${RAFIKI_SIGNATURE_SECRET:-327132b5-99e9-4eb8-8a25-2b7d7738ece1} - EXCHANGE_RATES_URL: ${RAFIKI_BACKEND_EXCHANGE_RATES_URL:-http://wallet-backend:3003/rates} + EXCHANGE_RATES_URL: ${RAFIKI_BACKEND_EXCHANGE_RATES_URL:-http://host.docker.internal:3003/rates} ENABLE_AUTO_PEERING: ${RAFIKI_BACKEND_ENABLE_AUTO_PEERING:-true} AUTO_PEERING_SERVER_PORT: ${RAFIKI_BACKEND_AUTO_PEERING_SERVER_PORT:-3005} INSTANCE_NAME: ${RAFIKI_BACKEND_INSTANCE_NAME:-Testnet Wallet} @@ -102,6 +110,8 @@ services: depends_on: - postgres - redis + extra_hosts: + - host.docker.internal:host-gateway labels: - traefik.enable=true - traefik.docker.network=testnet diff --git a/local/scripts/run-package-with-local-stop.sh b/local/scripts/run-package-with-local-stop.sh deleted file mode 100644 index 267e7e50d..000000000 --- a/local/scripts/run-package-with-local-stop.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" -COMPOSE_FILE="$ROOT_DIR/local/docker-compose.yml" - -if [[ $# -lt 2 ]]; then - echo "Usage: $0 [command] [args...]" >&2 - echo "Example: $0 @wallet/frontend wallet-frontend,wallet-backend dev" >&2 - exit 1 -fi - -PACKAGE_FILTER="$1" -SERVICES_CSV="$2" -shift 2 - -IFS=',' read -r -a SERVICES <<<"$SERVICES_CSV" - -# Only stop compose services on the host; inside containers this would stop the -# service itself and cause restart loops. -if [[ ! -f "/.dockerenv" ]]; then - # Free host ports used by local package commands without taking down infra services. - docker compose -f "$COMPOSE_FILE" stop "${SERVICES[@]}" >/dev/null 2>&1 || true -fi - -if [[ $# -eq 0 ]]; then - set -- dev -fi - -exec pnpm --filter "$PACKAGE_FILTER" -- "$@" diff --git a/local/wallet.yaml b/local/wallet.yaml deleted file mode 100644 index fd62bbd44..000000000 --- a/local/wallet.yaml +++ /dev/null @@ -1,127 +0,0 @@ -services: - # Wallet - wallet-backend: - container_name: wallet-backend-local - build: - context: ../ - args: - DEV_MODE: ${DEV_MODE:-true} - dockerfile: ./packages/wallet/backend/Dockerfile.dev - depends_on: - - postgres - - rafiki-backend - - redis - - mockgatehub - volumes: - - ../packages/wallet/backend:/home/testnet/packages/wallet/backend - - ../packages/wallet/shared:/home/testnet/packages/wallet/shared - environment: - NODE_ENV: ${NODE_ENV:-development} - NODE_TLS_REJECT_UNAUTHORIZED: ${WALLET_NODE_TLS_REJECT_UNAUTHORIZED:-0} - PORT: ${WALLET_BACKEND_PORT:-3003} - DEBUG_PORT: ${WALLET_BACKEND_DEBUG_PORT:-9229} - DATABASE_URL: ${WALLET_BACKEND_DATABASE_URL:-postgres://wallet_backend:wallet_backend@postgres-local/wallet_backend} - COOKIE_NAME: ${WALLET_BACKEND_COOKIE_NAME:-testnet.cookie} - COOKIE_PASSWORD: ${WALLET_BACKEND_COOKIE_PASSWORD:-testnet.cookie.password.super.secret.ilp} - COOKIE_TTL: ${WALLET_BACKEND_COOKIE_TTL:-2630000} - OPEN_PAYMENTS_HOST: ${WALLET_BACKEND_OPEN_PAYMENTS_HOST:-https://rafiki-backend.testnet.test} - RAFIKI_MONEY_FRONTEND_HOST: ${RAFIKI_MONEY_FRONTEND_HOST:-testnet.test} - GRAPHQL_ENDPOINT: ${WALLET_BACKEND_GRAPHQL_ENDPOINT:-http://rafiki-backend:3001/graphql} - AUTH_GRAPHQL_ENDPOINT: ${WALLET_BACKEND_AUTH_GRAPHQL_ENDPOINT:-http://rafiki-auth:3008/graphql} - AUTH_DOMAIN: ${WALLET_BACKEND_AUTH_DOMAIN:-http://rafiki-auth:3009} - AUTH_IDENTITY_SERVER_SECRET: ${AUTH_IDENTITY_SERVER_SECRET:-auth-secret-key-12345} - RAFIKI_WEBHOOK_SIGNATURE_SECRET: ${RAFIKI_SIGNATURE_SECRET:-327132b5-99e9-4eb8-8a25-2b7d7738ece1} - SENDGRID_API_KEY: ${SENDGRID_API_KEY:-} - FROM_EMAIL: ${FROM_EMAIL:-noreply@testnet.local} - SEND_EMAIL: ${SEND_EMAIL:-false} - REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} - GATEHUB_API_BASE_URL: ${GATEHUB_API_BASE_URL:-http://mockgatehub:8080} - GATEHUB_ENV: ${GATEHUB_ENV:-sandbox} - GATEHUB_IFRAME_MANAGED_RAMP_URL: ${GATEHUB_IFRAME_MANAGED_RAMP_URL:-https://mockgatehub.testnet.test} - GATEHUB_IFRAME_EXCHANGE_URL: ${GATEHUB_IFRAME_EXCHANGE_URL:-https://mockgatehub.testnet.test} - GATEHUB_IFRAME_ONBOARDING_URL: ${GATEHUB_IFRAME_ONBOARDING_URL:-https://mockgatehub.testnet.test} - GATEHUB_ACCESS_KEY: ${GATEHUB_ACCESS_KEY:-local-test-app-id} - GATEHUB_SECRET_KEY: ${GATEHUB_SECRET_KEY:-local-test-app-secret} - GATEHUB_WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET:-6d6f636b5f776562686f6f6b5f736563726574} - GATEHUB_GATEWAY_UUID: ${GATEHUB_GATEWAY_UUID:-mock_gateway_uuid} - GATEHUB_SETTLEMENT_WALLET_ADDRESS: ${GATEHUB_SETTLEMENT_WALLET_ADDRESS:-rMockSettlementAddress} - GATEHUB_ORG_ID: ${GATEHUB_ORG_ID:-mock_org_id} - GATEHUB_CARD_APP_ID: ${GATEHUB_CARD_APP_ID:-mock_card_app_id} - RATE_LIMIT: ${RATE_LIMIT:-false} - RATE_LIMIT_LEVEL: ${RATE_LIMIT_LEVEL:-LAX} - GATEHUB_ACCOUNT_PRODUCT_CODE: ${GATEHUB_ACCOUNT_PRODUCT_CODE:-account_product} - GATEHUB_CARD_PRODUCT_CODE: ${GATEHUB_CARD_PRODUCT_CODE:-card_product} - GATEHUB_NAME_ON_CARD: ${GATEHUB_NAME_ON_CARD:-TestnetUser} - GATEHUB_CARD_PP_PREFIX: ${GATEHUB_CARD_PP_PREFIX:-TEST} - CARD_DATA_HREF: ${CARD_DATA_HREF:-https://card.example.com/data} - CARD_PIN_HREF: ${CARD_PIN_HREF:-https://card.example.com/pin} - STRIPE_SECRET_KEY: ${STRIPE_SECRET_KEY:-notset} - STRIPE_WEBHOOK_SECRET: ${STRIPE_WEBHOOK_SECRET:-notset} - USE_STRIPE: ${USE_STRIPE:-false} - OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} - ADMIN_API_SECRET: ${ADMIN_API_SECRET:-secret-key} - ADMIN_SIGNATURE_VERSION: ${ADMIN_SIGNATURE_VERSION:-1} - WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET:-6d6f636b5f776562686f6f6b5f736563726574} - extra_hosts: - - testnet.test:host-gateway - - api.testnet.test:host-gateway - - auth.testnet.test:host-gateway - - rafiki-backend.testnet.test:host-gateway - - rafiki-frontend.testnet.test:host-gateway - - rafiki-card-service.testnet.test:host-gateway - - mockgatehub.testnet.test:host-gateway - - boutique.test:host-gateway - - api.boutique.test:host-gateway - restart: always - networks: - - testnet - ports: - - '3003:3003' - - '9229:9229' # Map debugger port to local machine's port 9229 - labels: - - traefik.enable=true - - traefik.docker.network=testnet - - traefik.http.routers.wallet-backend.rule=Host(`api.testnet.test`) - - traefik.http.routers.wallet-backend.entrypoints=websecure - - traefik.http.routers.wallet-backend.tls=true - - traefik.http.services.wallet-backend.loadbalancer.server.port=3003 - - wallet-frontend: - container_name: wallet-frontend-local - build: - context: .. - args: - DEV_MODE: ${DEV_MODE:-true} - NEXT_PUBLIC_BACKEND_URL: ${NEXT_PUBLIC_BACKEND_URL:-https://api.testnet.test} - NEXT_PUBLIC_AUTH_HOST: ${NEXT_PUBLIC_AUTH_HOST:-https://auth.testnet.test} - NEXT_PUBLIC_OPEN_PAYMENTS_HOST: ${NEXT_PUBLIC_OPEN_PAYMENTS_HOST:-https://rafiki-backend.testnet.test} - NEXT_PUBLIC_GATEHUB_ENV: ${NEXT_PUBLIC_GATEHUB_ENV:-sandbox} - NEXT_PUBLIC_THEME: ${NEXT_PUBLIC_THEME:-light} - NEXT_PUBLIC_FEATURES_ENABLED: ${NEXT_PUBLIC_FEATURES_ENABLED:-false} - dockerfile: ./packages/wallet/frontend/Dockerfile.dev - depends_on: - - wallet-backend - volumes: - - ../packages/wallet/frontend:/home/testnet/packages/wallet/frontend - - ../packages/wallet/shared:/home/testnet/packages/wallet/shared - environment: - NODE_ENV: ${NODE_ENV:-development} - BACKEND_URL: ${WALLET_FRONTEND_BACKEND_URL:-http://wallet-backend:3003} - NEXT_PUBLIC_BACKEND_URL: ${NEXT_PUBLIC_BACKEND_URL:-https://api.testnet.test} - NEXT_PUBLIC_AUTH_HOST: ${NEXT_PUBLIC_AUTH_HOST:-https://auth.testnet.test} - NEXT_PUBLIC_OPEN_PAYMENTS_HOST: ${NEXT_PUBLIC_OPEN_PAYMENTS_HOST:-https://rafiki-backend.testnet.test} - NEXT_PUBLIC_GATEHUB_ENV: ${NEXT_PUBLIC_GATEHUB_ENV:-sandbox} - NEXT_PUBLIC_THEME: ${NEXT_PUBLIC_THEME:-light} - NEXT_PUBLIC_FEATURES_ENABLED: ${NEXT_PUBLIC_FEATURES_ENABLED:-false} - restart: always - networks: - - testnet - ports: - - '4003:4003' - labels: - - traefik.enable=true - - traefik.docker.network=testnet - - traefik.http.routers.wallet-frontend.rule=Host(`testnet.test`) - - traefik.http.routers.wallet-frontend.entrypoints=websecure - - traefik.http.routers.wallet-frontend.tls=true - - traefik.http.services.wallet-frontend.loadbalancer.server.port=4003 diff --git a/package.json b/package.json index 40d812bbe..b6af1019f 100644 --- a/package.json +++ b/package.json @@ -9,16 +9,16 @@ "url": "https://github.com/interledger/testnet" }, "scripts": { - "boutique:backend": "bash ./local/scripts/run-package-with-local-stop.sh @boutique/backend boutique-backend", + "boutique:backend": "pnpm --filter @boutique/backend --", "boutique:frontend": "pnpm --filter @boutique/frontend --", "build": "pnpm -r build", "checks": "pnpm prettier:check && pnpm lint:check", "clean": "pnpm clean:modules && pnpm clean:builds", "clean:builds": "find . \\( -name \"dist\" -o -name \".next\" \\) -type d -prune -exec rm -rf '{}' +", "clean:modules": "find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +", - "dev": "pnpm local:up && concurrently -n \"WALLET,BOUTIQUE\" -c blue.bold,red.bold \"pnpm wallet:frontend dev\" \"pnpm boutique:frontend dev\"", - "dev:debug": "pnpm local:up:debug && concurrently -n \"WALLET,BOUTIQUE\" -c blue.bold,red.bold \"pnpm wallet:frontend dev\" \"pnpm boutique:frontend dev\"", - "dev:lite": "pnpm local:up:lite && concurrently -n \"WALLET,BOUTIQUE\" -c blue.bold,red.bold \"pnpm wallet:frontend dev\" \"pnpm boutique:frontend dev\"", + "dev": "pnpm local:up && concurrently -n \"WALLET-BE,WALLET-FE,BOUTIQUE-BE,BOUTIQUE-FE\" -c blue.bold,blue,red.bold,red \"pnpm wallet:backend dev\" \"pnpm wallet:frontend dev\" \"pnpm boutique:backend dev\" \"pnpm boutique:frontend dev\"", + "dev:debug": "pnpm local:up:debug && concurrently -n \"WALLET-BE,WALLET-FE,BOUTIQUE-BE,BOUTIQUE-FE\" -c blue.bold,blue,red.bold,red \"pnpm wallet:backend dev\" \"pnpm wallet:frontend dev\" \"pnpm boutique:backend dev\" \"pnpm boutique:frontend dev\"", + "dev:lite": "pnpm local:up:lite && concurrently -n \"WALLET-BE,WALLET-FE,BOUTIQUE-BE,BOUTIQUE-FE\" -c blue.bold,blue,red.bold,red \"pnpm wallet:backend dev\" \"pnpm wallet:frontend dev\" \"pnpm boutique:backend dev\" \"pnpm boutique:frontend dev\"", "format": "pnpm prettier:write && pnpm lint:fix", "lint": "pnpm lint:check", "lint:check": "eslint --max-warnings=0 .", @@ -44,8 +44,8 @@ "preinstall": "npx only-allow pnpm", "prettier:write": "prettier --config \".prettierrc.js\" --write .", "prettier:check": "prettier --config \".prettierrc.js\" --check .", - "wallet:backend": "bash ./local/scripts/run-package-with-local-stop.sh @wallet/backend wallet-backend", - "wallet:frontend": "bash ./local/scripts/run-package-with-local-stop.sh @wallet/frontend wallet-frontend" + "wallet:backend": "pnpm --filter @wallet/backend --", + "wallet:frontend": "pnpm --filter @wallet/frontend --" }, "devDependencies": { "@eslint/compat": "^1.4.0", diff --git a/packages/boutique/backend/.env.example b/packages/boutique/backend/.env.example new file mode 100644 index 000000000..c3b6eff86 --- /dev/null +++ b/packages/boutique/backend/.env.example @@ -0,0 +1,9 @@ +PORT=3004 +NODE_ENV=development +NODE_TLS_REJECT_UNAUTHORIZED=0 +FRONTEND_URL=https://boutique.test +DATABASE_URL=postgres://boutique_backend:boutique_backend@localhost:15434/boutique_backend +PAYMENT_POINTER= +KEY_ID= +PRIVATE_KEY= +REDIS_URL=redis://localhost:6379/4 diff --git a/packages/boutique/backend/package.json b/packages/boutique/backend/package.json index 256ee7c42..8920584c8 100644 --- a/packages/boutique/backend/package.json +++ b/packages/boutique/backend/package.json @@ -1,10 +1,10 @@ { "name": "@boutique/backend", "scripts": { - "start": "node dist/index.js", + "start": "node --env-file=.env dist/index.js", "build:deps": "pnpm --filter @shared/backend build && pnpm --filter @boutique/shared build", "build": "pnpm build:deps && tsc --build tsconfig.build.json && tsc-alias -p tsconfig.build.json", - "dev": "nodemon --watch ./src --watch ../shared/src --ext ts,json --delay 0.5 --exec \"pnpm run build && node ./dist/index.js\"", + "dev": "nodemon --watch ./src --watch ../shared/src --ext ts,json --delay 0.5 --exec \"pnpm run build && node --env-file=.env ./dist/index.js\"", "test": "pnpm build:deps && NODE_OPTIONS='--experimental-vm-modules' jest --passWithNoTests --maxWorkers=2" }, "dependencies": { diff --git a/packages/boutique/backend/src/config/env.ts b/packages/boutique/backend/src/config/env.ts index 39b76b0d2..fc22bffdd 100644 --- a/packages/boutique/backend/src/config/env.ts +++ b/packages/boutique/backend/src/config/env.ts @@ -18,10 +18,7 @@ const envSchema = z.object({ KEY_ID: nonPlaceholderString, PRIVATE_KEY: nonPlaceholderString, REDIS_URL: z.string().url(), - OPEN_PAYMENTS_USE_HTTP: z - .enum(['true', 'false']) - .default('false') - .transform((v) => v === 'true') + USE_HTTP_FOR_OPEN_PAYMENTS: z.boolean().optional() }) export type Env = z.infer diff --git a/packages/boutique/backend/src/container.ts b/packages/boutique/backend/src/container.ts index 5a3b3990d..8abe12a08 100644 --- a/packages/boutique/backend/src/container.ts +++ b/packages/boutique/backend/src/container.ts @@ -50,11 +50,12 @@ export async function createContainer( }) const logger = generateLogger(env) + const client = await createAuthenticatedClient({ keyId: env.KEY_ID, privateKey: Buffer.from(env.PRIVATE_KEY, 'base64'), walletAddressUrl: env.PAYMENT_POINTER, - useHttp: env.OPEN_PAYMENTS_USE_HTTP + useHttp: env.USE_HTTP_FOR_OPEN_PAYMENTS || false }) container.register({ diff --git a/packages/boutique/frontend/.env.example b/packages/boutique/frontend/.env.example index b12ede696..8dce33da7 100644 --- a/packages/boutique/frontend/.env.example +++ b/packages/boutique/frontend/.env.example @@ -1 +1,3 @@ -VITE_CURRENCY= \ No newline at end of file +VITE_API_BASE_URL=https://api.boutique.test +VITE_THEME=light +VITE_CURRENCY=USD \ No newline at end of file diff --git a/packages/boutique/frontend/src/lib/constants.ts b/packages/boutique/frontend/src/lib/constants.ts index a7f0e42bf..a9cc06cab 100644 --- a/packages/boutique/frontend/src/lib/constants.ts +++ b/packages/boutique/frontend/src/lib/constants.ts @@ -1,7 +1,7 @@ // Resolve the boutique API base URL at runtime based on the current hostname. -// In the local Docker environment the frontend is served behind Traefik at +// In the local HTTPS environment the frontend is served behind Traefik at // "boutique.test", so we route API calls to its TLS-proxied backend. -// Outside that environment (plain localhost dev) we fall back to the default +// Outside that environment (plain localhost dev) we still fall back to the // local backend port. const getDefaultApiBaseUrl = () => { if (typeof window !== 'undefined') { @@ -12,7 +12,7 @@ const getDefaultApiBaseUrl = () => { console.warn( 'Boutique API: falling back to http://localhost:3004. ' + - 'Set VITE_API_BASE_URL or access via boutique.test for the Docker environment.' + 'Set VITE_API_BASE_URL or access via boutique.test for the local HTTPS environment.' ) return 'http://localhost:3004' } @@ -20,4 +20,4 @@ const getDefaultApiBaseUrl = () => { export const API_BASE_URL = import.meta.env.VITE_API_BASE_URL || getDefaultApiBaseUrl() export const IMAGES_URL = API_BASE_URL + '/images/' -export const THEME = import.meta.env.THEME || 'light' +export const THEME = import.meta.env.VITE_THEME || 'light' diff --git a/packages/wallet/backend/.env.example b/packages/wallet/backend/.env.example new file mode 100644 index 000000000..8d6f1364a --- /dev/null +++ b/packages/wallet/backend/.env.example @@ -0,0 +1,44 @@ +PORT=3003 +NODE_ENV=development +NODE_TLS_REJECT_UNAUTHORIZED=0 +DATABASE_URL=postgres://wallet_backend:wallet_backend@localhost:15434/wallet_backend +REDIS_URL=redis://localhost:6379/0 +COOKIE_NAME=testnet.cookie +COOKIE_PASSWORD=testnet.cookie.password.super.secret.ilp +COOKIE_TTL=2630000 +GATEHUB_ENV=sandbox +GATEHUB_API_BASE_URL=http://localhost:8080 +GATEHUB_IFRAME_MANAGED_RAMP_URL=https://mockgatehub.testnet.test +GATEHUB_IFRAME_EXCHANGE_URL=https://mockgatehub.testnet.test +GATEHUB_IFRAME_ONBOARDING_URL=https://mockgatehub.testnet.test +GATEHUB_ACCESS_KEY=local-test-app-id +GATEHUB_SECRET_KEY=local-test-app-secret +GATEHUB_WEBHOOK_SECRET=6d6f636b5f776562686f6f6b5f736563726574 +GATEHUB_GATEWAY_UUID=mock-gateway-uuid +GATEHUB_SETTLEMENT_WALLET_ADDRESS=$ilp.interledger-test.dev/interledger +GATEHUB_ORG_ID=mock-org-id +GATEHUB_CARD_APP_ID=mock-card-app-id +GATEHUB_ACCOUNT_PRODUCT_CODE=DEFAULT +GATEHUB_CARD_PRODUCT_CODE=DEFAULT +GATEHUB_NAME_ON_CARD=TestnetUser +GATEHUB_CARD_PP_PREFIX=TEST +GRAPHQL_ENDPOINT=http://localhost:3011/graphql +AUTH_GRAPHQL_ENDPOINT=http://localhost:3008/graphql +AUTH_DOMAIN=https://auth.testnet.test +AUTH_IDENTITY_SERVER_SECRET=auth-secret-key-12345 +RAFIKI_WEBHOOK_SIGNATURE_SECRET=327132b5-99e9-4eb8-8a25-2b7d7738ece1 +ADMIN_SIGNATURE_VERSION=1 +ADMIN_API_SECRET=secret-key +OPERATOR_TENANT_ID=f829c064-762a-4430-ac5d-7af5df198551 +OPEN_PAYMENTS_HOST=https://rafiki-backend.testnet.test +RAFIKI_MONEY_FRONTEND_HOST=testnet.test +SENDGRID_API_KEY= +FROM_EMAIL=noreply@testnet.local +SEND_EMAIL=false +CARD_DATA_HREF=http://localhost:3007/card-data +CARD_PIN_HREF=http://localhost:3007/card-pin +STRIPE_SECRET_KEY=notset +STRIPE_WEBHOOK_SECRET=notset +USE_STRIPE=false +RATE_LIMIT=false +RATE_LIMIT_LEVEL=LAX diff --git a/packages/wallet/backend/package.json b/packages/wallet/backend/package.json index 48e2b8811..ccf8a4881 100644 --- a/packages/wallet/backend/package.json +++ b/packages/wallet/backend/package.json @@ -1,10 +1,10 @@ { "name": "@wallet/backend", "scripts": { - "start": "node -r tsconfig-paths/register dist/index.js", + "start": "node --env-file=.env -r tsconfig-paths/register dist/index.js", "build:deps": "pnpm --filter @shared/backend build && pnpm --filter @wallet/shared build", "build": "pnpm build:deps && tsc --build tsconfig.build.json && tsc-alias -p tsconfig.build.json", - "dev": "nodemon --watch ./src --watch ../shared/src --ext ts,json --delay 1 --exec \"pnpm run build && node ./dist/index.js\"", + "dev": "nodemon --watch ./src --watch ../shared/src --ext ts,json --delay 1 --exec \"pnpm run build && node --env-file=.env ./dist/index.js\"", "test": "jest --passWithNoTests --maxWorkers=75%", "generate": "graphql-codegen --config codegen.yml" }, diff --git a/packages/wallet/backend/src/config/env.ts b/packages/wallet/backend/src/config/env.ts index 49d133a87..e1638c0a2 100644 --- a/packages/wallet/backend/src/config/env.ts +++ b/packages/wallet/backend/src/config/env.ts @@ -55,7 +55,7 @@ const envSchema = z.object({ .string() .url() .default('http://rafiki-auth:3008/graphql'), - AUTH_DOMAIN: z.string().url().default('http://rafiki-auth:3009'), + AUTH_DOMAIN: z.string().url().default('https://auth.testnet.test'), AUTH_IDENTITY_SERVER_SECRET: z.string().default('replace-me'), RAFIKI_WEBHOOK_SIGNATURE_SECRET: z.string().default('replace-me'), ADMIN_SIGNATURE_VERSION: z.string().default('1'), diff --git a/packages/wallet/frontend/.env.example b/packages/wallet/frontend/.env.example new file mode 100644 index 000000000..ba2500ca0 --- /dev/null +++ b/packages/wallet/frontend/.env.example @@ -0,0 +1,8 @@ +COOKIE_NAME=testnet.cookie +BACKEND_INTERNAL_URL=http://localhost:3003 +NEXT_PUBLIC_BACKEND_URL=https://api.testnet.test +NEXT_PUBLIC_AUTH_HOST=https://auth.testnet.test +NEXT_PUBLIC_OPEN_PAYMENTS_HOST=https://rafiki-backend.testnet.test +NEXT_PUBLIC_GATEHUB_ENV=sandbox +NEXT_PUBLIC_THEME=light +NEXT_PUBLIC_FEATURES_ENABLED=true diff --git a/packages/wallet/frontend/next.config.js b/packages/wallet/frontend/next.config.js index ad92564b7..238b4b217 100644 --- a/packages/wallet/frontend/next.config.js +++ b/packages/wallet/frontend/next.config.js @@ -25,16 +25,17 @@ const nextConfig = { eslint: { ignoreDuringBuilds: true }, env: { NEXT_PUBLIC_BACKEND_URL: - process.env.NEXT_PUBLIC_BACKEND_URL || 'http://localhost:3003', - // Internal URL for server-side (middleware) to reach backend in Docker + process.env.NEXT_PUBLIC_BACKEND_URL || 'https://api.testnet.test', + // Internal URL for server-side (middleware) to reach the host backend. BACKEND_INTERNAL_URL: process.env.BACKEND_INTERNAL_URL || process.env.BACKEND_URL || - 'http://wallet-backend:3003', + 'http://localhost:3003', NEXT_PUBLIC_OPEN_PAYMENTS_HOST: - process.env.NEXT_PUBLIC_OPEN_PAYMENTS_HOST || '$rafiki-backend/', + process.env.NEXT_PUBLIC_OPEN_PAYMENTS_HOST || + 'https://rafiki-backend.testnet.test', NEXT_PUBLIC_AUTH_HOST: - process.env.NEXT_PUBLIC_AUTH_HOST || 'http://localhost:3006', + process.env.NEXT_PUBLIC_AUTH_HOST || 'https://auth.testnet.test', NEXT_PUBLIC_THEME: process.env.NEXT_PUBLIC_THEME || 'light', NEXT_PUBLIC_GATEHUB_ENV: process.env.NEXT_PUBLIC_GATEHUB_ENV || 'sandbox', NEXT_PUBLIC_FEATURES_ENABLED diff --git a/packages/wallet/frontend/src/lib/httpClient.ts b/packages/wallet/frontend/src/lib/httpClient.ts index 957dde238..5451dc964 100644 --- a/packages/wallet/frontend/src/lib/httpClient.ts +++ b/packages/wallet/frontend/src/lib/httpClient.ts @@ -17,7 +17,7 @@ export type ErrorResponse = { // Use internal backend URL when running on the server (SSR/middleware) const isServer = typeof window === 'undefined' const baseUrl = isServer - ? process.env.BACKEND_INTERNAL_URL || 'http://wallet-backend:3003' + ? process.env.BACKEND_INTERNAL_URL || 'http://localhost:3003' : process.env.NEXT_PUBLIC_BACKEND_URL export const httpClient = ky.extend({ From a11202d4fce80efa62fe1797e20e6983bd963dbb Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Mon, 13 Apr 2026 14:35:00 +0200 Subject: [PATCH 23/51] fix: examples are now useful --- .gitignore | 1 - local/.env.example | 204 ++++++++++++------------ local/.env.local | 42 +++++ packages/boutique/backend/.env.example | 32 ++-- packages/boutique/backend/.env.local | 9 ++ packages/boutique/backend/package.json | 4 +- packages/boutique/frontend/.env.example | 12 +- packages/boutique/frontend/.env.local | 3 + packages/wallet/backend/.env.example | 110 ++++++++----- packages/wallet/backend/.env.local | 44 +++++ packages/wallet/backend/package.json | 4 +- packages/wallet/frontend/.env.example | 26 ++- packages/wallet/frontend/.env.local | 8 + 13 files changed, 328 insertions(+), 171 deletions(-) create mode 100644 local/.env.local create mode 100644 packages/boutique/backend/.env.local create mode 100644 packages/boutique/frontend/.env.local create mode 100644 packages/wallet/backend/.env.local create mode 100644 packages/wallet/frontend/.env.local diff --git a/.gitignore b/.gitignore index f09cf47c5..5726c6dbe 100644 --- a/.gitignore +++ b/.gitignore @@ -77,7 +77,6 @@ web_modules/ .env.development.local .env.test.local .env.production.local -.env.local # parcel-bundler cache (https://parceljs.org/) .cache diff --git a/local/.env.example b/local/.env.example index 4abc291d6..15c406c50 100644 --- a/local/.env.example +++ b/local/.env.example @@ -1,96 +1,96 @@ -# Testnet local docker-compose environment file (example) -# Copy to .env and adjust as needed for your machine. -# -# By default, all GateHub variables point to the local MockGatehub container -# (no real credentials needed). To use the real GateHub Sandbox instead, see -# the "Real GateHub Sandbox overrides" section below. +## Testnet local docker-compose environment file (example) +## Copy to .env and adjust as needed for your machine. +## +## By default, all GateHub variables point to the local MockGatehub container +## (no real credentials needed). To use the real GateHub Sandbox instead, see +## the "Real GateHub Sandbox overrides" section below. -# --------------------------------------------------------------------------- -# General build / dev flags -# --------------------------------------------------------------------------- +## --------------------------------------------------------------------------- +## General build / dev flags +## --------------------------------------------------------------------------- -# DEV_MODE — Controls how core infra containers start when applicable. -# Wallet and boutique apps run on the host machine and are configured via -# package-local env files under packages/*. -DEV_MODE=true +## DEV_MODE — Controls how core infra containers start when applicable. +## Wallet and boutique apps run on the host machine and are configured via +## package-local env files under packages/*. +# DEV_MODE=true -# NODE_ENV — Standard Node.js environment flag, passed to every service. -# development (default) — enables error stack traces in API responses, -# allows HTTP (not just HTTPS) for internal service -# calls, relaxes cookie security (secure=false, -# sameSite=lax), and enables the /signup auth route. -# production — hides stack traces, enforces HTTPS and secure -# cookies (secure=true, sameSite=none), and may -# disable certain non-production endpoints. -# For local development you almost never need to change this. -NODE_ENV=development +## NODE_ENV — Standard Node.js environment flag, passed to every service. +## development (default) — enables error stack traces in API responses, +## allows HTTP (not just HTTPS) for internal service +## calls, relaxes cookie security (secure=false, +## sameSite=lax), and enables the /signup auth route. +## production — hides stack traces, enforces HTTPS and secure +## cookies (secure=true, sameSite=none), and may +## disable certain non-production endpoints. +## For local development you almost never need to change this. +# NODE_ENV=development -# Redis URL used by local core services. -REDIS_URL=redis://redis:6379/0 +## Redis URL used by local core services. +# REDIS_URL=redis://redis:6379/0 -# Shared secrets used by the core local stack. -AUTH_IDENTITY_SERVER_SECRET=dev_identity_server_secret -ADMIN_API_SECRET=secret-key -ADMIN_SIGNATURE_VERSION=1 -OPERATOR_TENANT_ID=f829c064-762a-4430-ac5d-7af5df198551 -RAFIKI_SIGNATURE_SECRET=327132b5-99e9-4eb8-8a25-2b7d7738ece1 +## Shared secrets used by the core local stack. +# AUTH_IDENTITY_SERVER_SECRET=dev_identity_server_secret +# ADMIN_API_SECRET=secret-key +# ADMIN_SIGNATURE_VERSION=1 +# OPERATOR_TENANT_ID=f829c064-762a-4430-ac5d-7af5df198551 +# RAFIKI_SIGNATURE_SECRET=327132b5-99e9-4eb8-8a25-2b7d7738ece1 -# --------------------------------------------------------------------------- -# GateHub integration -# --------------------------------------------------------------------------- -# Two modes are supported: -# -# 1. MockGatehub (default) — everything works out of the box. -# The wallet backend talks to the mockgatehub container inside the -# compose network. No real credentials required. -# -# 2. Real GateHub Sandbox — for full KYC / fiat on-off ramp testing. -# Create an account at https://sandbox.gatehub.net (or contact -# timea@interledger.foundation) to obtain the values below, then -# uncomment the "Real GateHub Sandbox overrides" block. -# --------------------------------------------------------------------------- +## --------------------------------------------------------------------------- +## GateHub integration +## --------------------------------------------------------------------------- +## Two modes are supported: +## +## 1. MockGatehub (default) — everything works out of the box. +## The wallet backend talks to the mockgatehub container inside the +## compose network. No real credentials required. +## +## 2. Real GateHub Sandbox — for full KYC / fiat on-off ramp testing. +## Create an account at https://sandbox.gatehub.net (or contact +## timea@interledger.foundation) to obtain the values below, then +## uncomment the "Real GateHub Sandbox overrides" block. +## --------------------------------------------------------------------------- -# --- Mock defaults (active when the override block below is commented) ----- -# GATEHUB_API_BASE_URL is used by the backend for signed GateHub API calls. -# The three GATEHUB_IFRAME_*_URL values are required and used for browser-facing -# iframe URLs. Backend startup fails if any of them is missing. -# Keep these credentials aligned with packages/wallet/backend/.env when using -# the host-run wallet backend against MockGatehub. -GATEHUB_API_BASE_URL=http://mockgatehub:8080 -GATEHUB_ENV=sandbox -GATEHUB_IFRAME_MANAGED_RAMP_URL=http://localhost:8080 -GATEHUB_IFRAME_EXCHANGE_URL=http://localhost:8080 -GATEHUB_IFRAME_ONBOARDING_URL=http://localhost:8080 -GATEHUB_ACCESS_KEY=mock_access_key -GATEHUB_SECRET_KEY=mock_secret_key -GATEHUB_WEBHOOK_SECRET=6d6f636b5f776562686f6f6b5f736563726574 -GATEHUB_GATEWAY_UUID=mock-gateway-uuid -GATEHUB_SETTLEMENT_WALLET_ADDRESS=$ilp.interledger-test.dev/interledger -GATEHUB_ORG_ID=mock-org-id -GATEHUB_CARD_APP_ID=mock-card-app-id +## --- Mock defaults (active when the override block below is commented) ----- +## GATEHUB_API_BASE_URL is used by the backend for signed GateHub API calls. +## The three GATEHUB_IFRAME_*_URL values are required and used for browser-facing +## iframe URLs. Backend startup fails if any of them is missing. +## Keep these credentials aligned with packages/wallet/backend/.env when using +## the host-run wallet backend against MockGatehub. +# GATEHUB_API_BASE_URL=http://mockgatehub:8080 +# GATEHUB_ENV=sandbox +# GATEHUB_IFRAME_MANAGED_RAMP_URL=http://localhost:8080 +# GATEHUB_IFRAME_EXCHANGE_URL=http://localhost:8080 +# GATEHUB_IFRAME_ONBOARDING_URL=http://localhost:8080 +# GATEHUB_ACCESS_KEY=mock_access_key +# GATEHUB_SECRET_KEY=mock_secret_key +# GATEHUB_WEBHOOK_SECRET=6d6f636b5f776562686f6f6b5f736563726574 +# GATEHUB_GATEWAY_UUID=mock-gateway-uuid +# GATEHUB_SETTLEMENT_WALLET_ADDRESS=$ilp.interledger-test.dev/interledger +# GATEHUB_ORG_ID=mock-org-id +# GATEHUB_CARD_APP_ID=mock-card-app-id -# --- Real GateHub endpoint reference -------------------------------------- -# Use these endpoint shapes when configuring real GateHub hosts. -# -# Sandbox: -# GATEHUB_API_BASE_URL=https://api.sandbox.gatehub.net -# GATEHUB_IFRAME_MANAGED_RAMP_URL=https://managed-ramp.sandbox.gatehub.net -# GATEHUB_IFRAME_EXCHANGE_URL=https://exchange.sandbox.gatehub.net -# GATEHUB_IFRAME_ONBOARDING_URL=https://onboarding.sandbox.gatehub.net -# -# Production: -# GATEHUB_API_BASE_URL=https://api.gatehub.net -# GATEHUB_IFRAME_MANAGED_RAMP_URL=https://managed-ramp.gatehub.net -# GATEHUB_IFRAME_EXCHANGE_URL=https://exchange.gatehub.net -# GATEHUB_IFRAME_ONBOARDING_URL=https://onboarding.gatehub.net +## --- Real GateHub endpoint reference -------------------------------------- +## Use these endpoint shapes when configuring real GateHub hosts. +## +## Sandbox: +## GATEHUB_API_BASE_URL=https://api.sandbox.gatehub.net +## GATEHUB_IFRAME_MANAGED_RAMP_URL=https://managed-ramp.sandbox.gatehub.net +## GATEHUB_IFRAME_EXCHANGE_URL=https://exchange.sandbox.gatehub.net +## GATEHUB_IFRAME_ONBOARDING_URL=https://onboarding.sandbox.gatehub.net +## +## Production: +## GATEHUB_API_BASE_URL=https://api.gatehub.net +## GATEHUB_IFRAME_MANAGED_RAMP_URL=https://managed-ramp.gatehub.net +## GATEHUB_IFRAME_EXCHANGE_URL=https://exchange.gatehub.net +## GATEHUB_IFRAME_ONBOARDING_URL=https://onboarding.gatehub.net -# --- Real GateHub Sandbox overrides ---------------------------------------- -# To use the real sandbox, comment out the mock block above and uncomment the -# lines below, filling in your credentials. -# -# IMPORTANT: Keep all three GATEHUB_IFRAME_* URL values configured. -# For real sandbox they should be the GateHub hosts shown below. -# +## --- Real GateHub Sandbox overrides ---------------------------------------- +## To use the real sandbox, comment out the mock block above and uncomment the +## lines below, filling in your credentials. +## +## IMPORTANT: Keep all three GATEHUB_IFRAME_* URL values configured. +## For real sandbox they should be the GateHub hosts shown below. +## # GATEHUB_ENV=sandbox # GATEHUB_API_BASE_URL=https://api.sandbox.gatehub.net # GATEHUB_IFRAME_MANAGED_RAMP_URL=https://managed-ramp.sandbox.gatehub.net @@ -104,23 +104,23 @@ GATEHUB_CARD_APP_ID=mock-card-app-id # GATEHUB_ORG_ID= # GATEHUB_CARD_APP_ID= -# Rafiki public URL defaults for local wallet-address generation -RAFIKI_BACKEND_OPEN_PAYMENTS_URL=https://rafiki-backend.testnet.test -RAFIKI_BACKEND_WALLET_ADDRESS_URL=https://rafiki-backend.testnet.test/.well-known/pay -RAFIKI_FRONTEND_OPEN_PAYMENTS_URL=https://rafiki-backend.testnet.test/ -RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL=https://auth.testnet.test -RAFIKI_AUTH_TRUST_PROXY=true -RAFIKI_BACKEND_TRUST_PROXY=true -# Allow local self-signed TLS for rafiki-auth when fetching wallet-address jwks from *.testnet.test. -RAFIKI_AUTH_NODE_TLS_REJECT_UNAUTHORIZED=0 +## Rafiki public URL defaults for local wallet-address generation +# RAFIKI_BACKEND_OPEN_PAYMENTS_URL=https://rafiki-backend.testnet.test +# RAFIKI_BACKEND_WALLET_ADDRESS_URL=https://rafiki-backend.testnet.test/.well-known/pay +# RAFIKI_FRONTEND_OPEN_PAYMENTS_URL=https://rafiki-backend.testnet.test/ +# RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL=https://auth.testnet.test +# RAFIKI_AUTH_TRUST_PROXY=true +# RAFIKI_BACKEND_TRUST_PROXY=true +## Allow local self-signed TLS for rafiki-auth when fetching wallet-address jwks from *.testnet.test. +# RAFIKI_AUTH_NODE_TLS_REJECT_UNAUTHORIZED=0 -# Core services that call the wallet backend should target the host machine. -RAFIKI_BACKEND_WEBHOOK_URL=http://host.docker.internal:3003/webhooks -RAFIKI_BACKEND_EXCHANGE_RATES_URL=http://host.docker.internal:3003/rates -MOCKGATEHUB_WEBHOOK_URL=http://host.docker.internal:3003/gatehub-webhooks +## Core services that call the wallet backend should target the host machine. +# RAFIKI_BACKEND_WEBHOOK_URL=http://host.docker.internal:3003/webhooks +# RAFIKI_BACKEND_EXCHANGE_RATES_URL=http://host.docker.internal:3003/rates +# MOCKGATEHUB_WEBHOOK_URL=http://host.docker.internal:3003/gatehub-webhooks -# Wallet and boutique app env files now live here: -# - packages/wallet/backend/.env(.example) -# - packages/wallet/frontend/.env.local(.example) -# - packages/boutique/backend/.env(.example) -# - packages/boutique/frontend/.env.local(.example) +## Wallet and boutique app env files now live here: +## - packages/wallet/backend/.env(.example) +## - packages/wallet/frontend/.env.local(.example) +## - packages/boutique/backend/.env(.example) +## - packages/boutique/frontend/.env.local(.example) diff --git a/local/.env.local b/local/.env.local new file mode 100644 index 000000000..c5c98adff --- /dev/null +++ b/local/.env.local @@ -0,0 +1,42 @@ +DEV_MODE=true + +NODE_ENV=development + +# Redis URL used by local core services. +REDIS_URL=redis://redis:6379/0 + +# Shared secrets used by the core local stack. +AUTH_IDENTITY_SERVER_SECRET=dev_identity_server_secret +ADMIN_API_SECRET=secret-key +ADMIN_SIGNATURE_VERSION=1 +OPERATOR_TENANT_ID=f829c064-762a-4430-ac5d-7af5df198551 +RAFIKI_SIGNATURE_SECRET=327132b5-99e9-4eb8-8a25-2b7d7738ece1 + +GATEHUB_API_BASE_URL=http://mockgatehub:8080 +GATEHUB_ENV=sandbox +GATEHUB_IFRAME_MANAGED_RAMP_URL=http://localhost:8080 +GATEHUB_IFRAME_EXCHANGE_URL=http://localhost:8080 +GATEHUB_IFRAME_ONBOARDING_URL=http://localhost:8080 +GATEHUB_ACCESS_KEY=mock_access_key +GATEHUB_SECRET_KEY=mock_secret_key +GATEHUB_WEBHOOK_SECRET=6d6f636b5f776562686f6f6b5f736563726574 +GATEHUB_GATEWAY_UUID=mock-gateway-uuid +GATEHUB_SETTLEMENT_WALLET_ADDRESS=$ilp.interledger-test.dev/interledger +GATEHUB_ORG_ID=mock-org-id +GATEHUB_CARD_APP_ID=mock-card-app-id + +# Rafiki public URL defaults for local wallet-address generation +RAFIKI_BACKEND_OPEN_PAYMENTS_URL=https://rafiki-backend.testnet.test +RAFIKI_BACKEND_WALLET_ADDRESS_URL=https://rafiki-backend.testnet.test/.well-known/pay +RAFIKI_FRONTEND_OPEN_PAYMENTS_URL=https://rafiki-backend.testnet.test/ +RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL=https://auth.testnet.test +RAFIKI_AUTH_TRUST_PROXY=true +RAFIKI_BACKEND_TRUST_PROXY=true +# Allow local self-signed TLS for rafiki-auth when fetching wallet-address jwks from *.testnet.test. +RAFIKI_AUTH_NODE_TLS_REJECT_UNAUTHORIZED=0 + +# Core services that call the wallet backend should target the host machine. +RAFIKI_BACKEND_WEBHOOK_URL=http://host.docker.internal:3003/webhooks +RAFIKI_BACKEND_EXCHANGE_RATES_URL=http://host.docker.internal:3003/rates +MOCKGATEHUB_WEBHOOK_URL=http://host.docker.internal:3003/gatehub-webhooks + diff --git a/packages/boutique/backend/.env.example b/packages/boutique/backend/.env.example index c3b6eff86..2b70e7b70 100644 --- a/packages/boutique/backend/.env.example +++ b/packages/boutique/backend/.env.example @@ -1,9 +1,23 @@ -PORT=3004 -NODE_ENV=development -NODE_TLS_REJECT_UNAUTHORIZED=0 -FRONTEND_URL=https://boutique.test -DATABASE_URL=postgres://boutique_backend:boutique_backend@localhost:15434/boutique_backend -PAYMENT_POINTER= -KEY_ID= -PRIVATE_KEY= -REDIS_URL=redis://localhost:6379/4 +# You can copy this file to .env and fill in the values to run the backend locally. Do not commit the .env +# file with real values to git. + +########## INFRASTRUCTURE ####################################################################### +## chances are you dont need to change these for local development, but you can if you want to +## run the backend against a different database or redis instance. + +# PORT=3004 +# NODE_ENV=development +# NODE_TLS_REJECT_UNAUTHORIZED=0 +# FRONTEND_URL=https://boutique.test +# DATABASE_URL=postgres://boutique_backend:boutique_backend@localhost:15434/boutique_backend +# REDIS_URL=redis://localhost:6379/4 + +######### OPEN PAYMENTS CONFIGURATION to make Boutique work ###################################### +## You need to create a wallet using https://testnet.test and then create Developer keys for it. + +## Note that the payment pointer needs to be prexed with `https://` and not `$` as is common when +## writing payment pointers. The backend will convert it to the correct format when fetching the +## wallet address and signing requests. +# PAYMENT_POINTER=https://change-me +# KEY_ID=guid-here +# PRIVATE_KEY=base64-encoded-private-key-here diff --git a/packages/boutique/backend/.env.local b/packages/boutique/backend/.env.local new file mode 100644 index 000000000..c956e7c8f --- /dev/null +++ b/packages/boutique/backend/.env.local @@ -0,0 +1,9 @@ +PORT=3004 +NODE_ENV=development +NODE_TLS_REJECT_UNAUTHORIZED=0 +FRONTEND_URL=https://boutique.test +DATABASE_URL=postgres://boutique_backend:boutique_backend@localhost:15434/boutique_backend +PAYMENT_POINTER=https://rafiki-backend.testnet.test/341c893c +KEY_ID=122b8663-f636-4934-807f-656219d60e6b +PRIVATE_KEY=LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1DNENBUUF3QlFZREsyVndCQ0lFSU4wUzJZdXJRelM3ZktzZ3RKYmY3VS9ZWVhGWnNwbjFSYTZvWWViVXFiS1IKLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQ== +REDIS_URL=redis://localhost:6379/4 diff --git a/packages/boutique/backend/package.json b/packages/boutique/backend/package.json index 8920584c8..693af3f37 100644 --- a/packages/boutique/backend/package.json +++ b/packages/boutique/backend/package.json @@ -1,10 +1,10 @@ { "name": "@boutique/backend", "scripts": { - "start": "node --env-file=.env dist/index.js", + "start": "sh -c 'set --; [ -f .env.local ] && set -- \"$@\" --env-file=.env.local; [ -f .env ] && set -- \"$@\" --env-file=.env; node \"$@\" dist/index.js'", "build:deps": "pnpm --filter @shared/backend build && pnpm --filter @boutique/shared build", "build": "pnpm build:deps && tsc --build tsconfig.build.json && tsc-alias -p tsconfig.build.json", - "dev": "nodemon --watch ./src --watch ../shared/src --ext ts,json --delay 0.5 --exec \"pnpm run build && node --env-file=.env ./dist/index.js\"", + "dev": "nodemon --watch ./src --watch ../shared/src --ext ts,json --delay 0.5 --exec \"sh -c 'set --; [ -f .env.local ] && set -- \\\"$@\\\" --env-file=.env.local; [ -f .env ] && set -- \\\"$@\\\" --env-file=.env; pnpm run build && node \\\"$@\\\" ./dist/index.js'\"", "test": "pnpm build:deps && NODE_OPTIONS='--experimental-vm-modules' jest --passWithNoTests --maxWorkers=2" }, "dependencies": { diff --git a/packages/boutique/frontend/.env.example b/packages/boutique/frontend/.env.example index 8dce33da7..a040ddeae 100644 --- a/packages/boutique/frontend/.env.example +++ b/packages/boutique/frontend/.env.example @@ -1,3 +1,9 @@ -VITE_API_BASE_URL=https://api.boutique.test -VITE_THEME=light -VITE_CURRENCY=USD \ No newline at end of file +# You can copy this file to .env.local and adjust values to run the boutique frontend locally. +# If you create both .env.local and .env, values in .env override values from .env.local. + +########## FRONTEND API AND THEME ################################################################ +## VITE_* variables are exposed to the browser at build time. + +# VITE_API_BASE_URL=https://api.boutique.test +# VITE_THEME=light +# VITE_CURRENCY=USD \ No newline at end of file diff --git a/packages/boutique/frontend/.env.local b/packages/boutique/frontend/.env.local new file mode 100644 index 000000000..9df2f13c8 --- /dev/null +++ b/packages/boutique/frontend/.env.local @@ -0,0 +1,3 @@ +VITE_API_BASE_URL=https://api.boutique.test +VITE_THEME=light +VITE_CURRENCY=USD diff --git a/packages/wallet/backend/.env.example b/packages/wallet/backend/.env.example index 8d6f1364a..1b3c1f3d2 100644 --- a/packages/wallet/backend/.env.example +++ b/packages/wallet/backend/.env.example @@ -1,44 +1,66 @@ -PORT=3003 -NODE_ENV=development -NODE_TLS_REJECT_UNAUTHORIZED=0 -DATABASE_URL=postgres://wallet_backend:wallet_backend@localhost:15434/wallet_backend -REDIS_URL=redis://localhost:6379/0 -COOKIE_NAME=testnet.cookie -COOKIE_PASSWORD=testnet.cookie.password.super.secret.ilp -COOKIE_TTL=2630000 -GATEHUB_ENV=sandbox -GATEHUB_API_BASE_URL=http://localhost:8080 -GATEHUB_IFRAME_MANAGED_RAMP_URL=https://mockgatehub.testnet.test -GATEHUB_IFRAME_EXCHANGE_URL=https://mockgatehub.testnet.test -GATEHUB_IFRAME_ONBOARDING_URL=https://mockgatehub.testnet.test -GATEHUB_ACCESS_KEY=local-test-app-id -GATEHUB_SECRET_KEY=local-test-app-secret -GATEHUB_WEBHOOK_SECRET=6d6f636b5f776562686f6f6b5f736563726574 -GATEHUB_GATEWAY_UUID=mock-gateway-uuid -GATEHUB_SETTLEMENT_WALLET_ADDRESS=$ilp.interledger-test.dev/interledger -GATEHUB_ORG_ID=mock-org-id -GATEHUB_CARD_APP_ID=mock-card-app-id -GATEHUB_ACCOUNT_PRODUCT_CODE=DEFAULT -GATEHUB_CARD_PRODUCT_CODE=DEFAULT -GATEHUB_NAME_ON_CARD=TestnetUser -GATEHUB_CARD_PP_PREFIX=TEST -GRAPHQL_ENDPOINT=http://localhost:3011/graphql -AUTH_GRAPHQL_ENDPOINT=http://localhost:3008/graphql -AUTH_DOMAIN=https://auth.testnet.test -AUTH_IDENTITY_SERVER_SECRET=auth-secret-key-12345 -RAFIKI_WEBHOOK_SIGNATURE_SECRET=327132b5-99e9-4eb8-8a25-2b7d7738ece1 -ADMIN_SIGNATURE_VERSION=1 -ADMIN_API_SECRET=secret-key -OPERATOR_TENANT_ID=f829c064-762a-4430-ac5d-7af5df198551 -OPEN_PAYMENTS_HOST=https://rafiki-backend.testnet.test -RAFIKI_MONEY_FRONTEND_HOST=testnet.test -SENDGRID_API_KEY= -FROM_EMAIL=noreply@testnet.local -SEND_EMAIL=false -CARD_DATA_HREF=http://localhost:3007/card-data -CARD_PIN_HREF=http://localhost:3007/card-pin -STRIPE_SECRET_KEY=notset -STRIPE_WEBHOOK_SECRET=notset -USE_STRIPE=false -RATE_LIMIT=false -RATE_LIMIT_LEVEL=LAX +# You can copy this file to .env.local and adjust values to run the wallet backend locally. +# If you create both .env.local and .env, values in .env override values from .env.local. +# Do not commit sensitive real credentials. + +########## INFRASTRUCTURE ####################################################################### +## Usually you do not need to change these for local development. + +# PORT=3003 +# NODE_ENV=development +# NODE_TLS_REJECT_UNAUTHORIZED=0 +# DATABASE_URL=postgres://wallet_backend:wallet_backend@localhost:15434/wallet_backend +# REDIS_URL=redis://localhost:6379/0 + +########## SESSION / COOKIE SETTINGS ############################################################ +## COOKIE_PASSWORD should be a long random secret in non-local environments. + +# COOKIE_NAME=testnet.cookie +# COOKIE_PASSWORD=testnet.cookie.password.super.secret.ilp +# COOKIE_TTL=2630000 + +########## GATEHUB INTEGRATION ################################################################## +## Keep these aligned with your local mock/real GateHub setup. + +# GATEHUB_ENV=sandbox +# GATEHUB_API_BASE_URL=http://localhost:8080 +# GATEHUB_IFRAME_MANAGED_RAMP_URL=https://mockgatehub.testnet.test +# GATEHUB_IFRAME_EXCHANGE_URL=https://mockgatehub.testnet.test +# GATEHUB_IFRAME_ONBOARDING_URL=https://mockgatehub.testnet.test +# GATEHUB_ACCESS_KEY=local-test-app-id +# GATEHUB_SECRET_KEY=local-test-app-secret +# GATEHUB_WEBHOOK_SECRET=6d6f636b5f776562686f6f6b5f736563726574 +# GATEHUB_GATEWAY_UUID=mock-gateway-uuid +# GATEHUB_SETTLEMENT_WALLET_ADDRESS=$ilp.interledger-test.dev/interledger +# GATEHUB_ORG_ID=mock-org-id +# GATEHUB_CARD_APP_ID=mock-card-app-id +# GATEHUB_ACCOUNT_PRODUCT_CODE=DEFAULT +# GATEHUB_CARD_PRODUCT_CODE=DEFAULT +# GATEHUB_NAME_ON_CARD=TestnetUser +# GATEHUB_CARD_PP_PREFIX=TEST + +########## RAFIKI / AUTH / OPEN PAYMENTS ######################################################## + +# GRAPHQL_ENDPOINT=http://localhost:3011/graphql +# AUTH_GRAPHQL_ENDPOINT=http://localhost:3008/graphql +# AUTH_DOMAIN=https://auth.testnet.test +# AUTH_IDENTITY_SERVER_SECRET=auth-secret-key-12345 +# RAFIKI_WEBHOOK_SIGNATURE_SECRET=327132b5-99e9-4eb8-8a25-2b7d7738ece1 +# ADMIN_SIGNATURE_VERSION=1 +# ADMIN_API_SECRET=secret-key +# OPERATOR_TENANT_ID=f829c064-762a-4430-ac5d-7af5df198551 +# OPEN_PAYMENTS_HOST=https://rafiki-backend.testnet.test +# RAFIKI_MONEY_FRONTEND_HOST=testnet.test + +########## EMAIL / CARD / STRIPE / RATE LIMIT ################################################### +## Optional integration settings for local feature testing. + +# SENDGRID_API_KEY= +# FROM_EMAIL=noreply@testnet.local +# SEND_EMAIL=false +# CARD_DATA_HREF=http://localhost:3007/card-data +# CARD_PIN_HREF=http://localhost:3007/card-pin +# STRIPE_SECRET_KEY=notset +# STRIPE_WEBHOOK_SECRET=notset +# USE_STRIPE=false +# RATE_LIMIT=false +# RATE_LIMIT_LEVEL=LAX diff --git a/packages/wallet/backend/.env.local b/packages/wallet/backend/.env.local new file mode 100644 index 000000000..8d6f1364a --- /dev/null +++ b/packages/wallet/backend/.env.local @@ -0,0 +1,44 @@ +PORT=3003 +NODE_ENV=development +NODE_TLS_REJECT_UNAUTHORIZED=0 +DATABASE_URL=postgres://wallet_backend:wallet_backend@localhost:15434/wallet_backend +REDIS_URL=redis://localhost:6379/0 +COOKIE_NAME=testnet.cookie +COOKIE_PASSWORD=testnet.cookie.password.super.secret.ilp +COOKIE_TTL=2630000 +GATEHUB_ENV=sandbox +GATEHUB_API_BASE_URL=http://localhost:8080 +GATEHUB_IFRAME_MANAGED_RAMP_URL=https://mockgatehub.testnet.test +GATEHUB_IFRAME_EXCHANGE_URL=https://mockgatehub.testnet.test +GATEHUB_IFRAME_ONBOARDING_URL=https://mockgatehub.testnet.test +GATEHUB_ACCESS_KEY=local-test-app-id +GATEHUB_SECRET_KEY=local-test-app-secret +GATEHUB_WEBHOOK_SECRET=6d6f636b5f776562686f6f6b5f736563726574 +GATEHUB_GATEWAY_UUID=mock-gateway-uuid +GATEHUB_SETTLEMENT_WALLET_ADDRESS=$ilp.interledger-test.dev/interledger +GATEHUB_ORG_ID=mock-org-id +GATEHUB_CARD_APP_ID=mock-card-app-id +GATEHUB_ACCOUNT_PRODUCT_CODE=DEFAULT +GATEHUB_CARD_PRODUCT_CODE=DEFAULT +GATEHUB_NAME_ON_CARD=TestnetUser +GATEHUB_CARD_PP_PREFIX=TEST +GRAPHQL_ENDPOINT=http://localhost:3011/graphql +AUTH_GRAPHQL_ENDPOINT=http://localhost:3008/graphql +AUTH_DOMAIN=https://auth.testnet.test +AUTH_IDENTITY_SERVER_SECRET=auth-secret-key-12345 +RAFIKI_WEBHOOK_SIGNATURE_SECRET=327132b5-99e9-4eb8-8a25-2b7d7738ece1 +ADMIN_SIGNATURE_VERSION=1 +ADMIN_API_SECRET=secret-key +OPERATOR_TENANT_ID=f829c064-762a-4430-ac5d-7af5df198551 +OPEN_PAYMENTS_HOST=https://rafiki-backend.testnet.test +RAFIKI_MONEY_FRONTEND_HOST=testnet.test +SENDGRID_API_KEY= +FROM_EMAIL=noreply@testnet.local +SEND_EMAIL=false +CARD_DATA_HREF=http://localhost:3007/card-data +CARD_PIN_HREF=http://localhost:3007/card-pin +STRIPE_SECRET_KEY=notset +STRIPE_WEBHOOK_SECRET=notset +USE_STRIPE=false +RATE_LIMIT=false +RATE_LIMIT_LEVEL=LAX diff --git a/packages/wallet/backend/package.json b/packages/wallet/backend/package.json index ccf8a4881..e29351164 100644 --- a/packages/wallet/backend/package.json +++ b/packages/wallet/backend/package.json @@ -1,10 +1,10 @@ { "name": "@wallet/backend", "scripts": { - "start": "node --env-file=.env -r tsconfig-paths/register dist/index.js", + "start": "sh -c 'set --; [ -f .env.local ] && set -- \"$@\" --env-file=.env.local; [ -f .env ] && set -- \"$@\" --env-file=.env; node \"$@\" -r tsconfig-paths/register dist/index.js'", "build:deps": "pnpm --filter @shared/backend build && pnpm --filter @wallet/shared build", "build": "pnpm build:deps && tsc --build tsconfig.build.json && tsc-alias -p tsconfig.build.json", - "dev": "nodemon --watch ./src --watch ../shared/src --ext ts,json --delay 1 --exec \"pnpm run build && node --env-file=.env ./dist/index.js\"", + "dev": "nodemon --watch ./src --watch ../shared/src --ext ts,json --delay 1 --exec \"sh -c 'set --; [ -f .env.local ] && set -- \\\"$@\\\" --env-file=.env.local; [ -f .env ] && set -- \\\"$@\\\" --env-file=.env; pnpm run build && node \\\"$@\\\" ./dist/index.js'\"", "test": "jest --passWithNoTests --maxWorkers=75%", "generate": "graphql-codegen --config codegen.yml" }, diff --git a/packages/wallet/frontend/.env.example b/packages/wallet/frontend/.env.example index ba2500ca0..e3f7d2e33 100644 --- a/packages/wallet/frontend/.env.example +++ b/packages/wallet/frontend/.env.example @@ -1,8 +1,18 @@ -COOKIE_NAME=testnet.cookie -BACKEND_INTERNAL_URL=http://localhost:3003 -NEXT_PUBLIC_BACKEND_URL=https://api.testnet.test -NEXT_PUBLIC_AUTH_HOST=https://auth.testnet.test -NEXT_PUBLIC_OPEN_PAYMENTS_HOST=https://rafiki-backend.testnet.test -NEXT_PUBLIC_GATEHUB_ENV=sandbox -NEXT_PUBLIC_THEME=light -NEXT_PUBLIC_FEATURES_ENABLED=true +# You can copy this file to .env.local and adjust values to run the wallet frontend locally. +# If you create both .env.local and .env, values in .env override values from .env.local. +# Keep NEXT_PUBLIC_* URLs aligned with the local testnet domains. + +########## SESSION AND INTERNAL BACKEND ######################################################### + +# COOKIE_NAME=testnet.cookie +# BACKEND_INTERNAL_URL=http://localhost:3003 + +########## PUBLIC FRONTEND CONFIG ################################################################ +## NEXT_PUBLIC_* variables are exposed to the browser. + +# NEXT_PUBLIC_BACKEND_URL=https://api.testnet.test +# NEXT_PUBLIC_AUTH_HOST=https://auth.testnet.test +# NEXT_PUBLIC_OPEN_PAYMENTS_HOST=https://rafiki-backend.testnet.test +# NEXT_PUBLIC_GATEHUB_ENV=sandbox +# NEXT_PUBLIC_THEME=light +# NEXT_PUBLIC_FEATURES_ENABLED=true diff --git a/packages/wallet/frontend/.env.local b/packages/wallet/frontend/.env.local new file mode 100644 index 000000000..769eeeeb3 --- /dev/null +++ b/packages/wallet/frontend/.env.local @@ -0,0 +1,8 @@ +COOKIE_NAME=testnet.cookie +BACKEND_INTERNAL_URL=http://localhost:3003 +NEXT_PUBLIC_BACKEND_URL=https://api.testnet.test +NEXT_PUBLIC_AUTH_HOST=https://auth.testnet.test +NEXT_PUBLIC_OPEN_PAYMENTS_HOST=https://rafiki-backend.testnet.test +NEXT_PUBLIC_GATEHUB_ENV=sandbox +NEXT_PUBLIC_THEME=light +NEXT_PUBLIC_FEATURES_ENABLED=false From ca0c9797ce28904073e57db7ea47557d6d9a03d7 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Tue, 14 Apr 2026 08:34:45 +0200 Subject: [PATCH 24/51] ci: added npm run to make testing easy --- README.md | 8 ++++---- package.json | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 016752caf..dcca4fea9 100644 --- a/README.md +++ b/README.md @@ -166,11 +166,11 @@ Example files are committed next to each app as `.env.example`. Upon executing the above command, the following will be available: -- [https://mockgatehub.testnet.test](https://mockgatehub.testnet.test) - Mock GateHub service used for local funding and related sandbox flows. +- [https://auth.testnet.test](https://auth.testnet.test) - Local authentication service. +- [https://testnet.test](https://testnet.test) - Test Wallet frontend. - [https://api.testnet.test](https://api.testnet.test) - Wallet backend API for the local Test Wallet environment. +- [https://boutique.test](https://boutique.test) - Boutique frontend. - [https://api.boutique.test](https://api.boutique.test) - Boutique backend API serving product and checkout functionality. +- [https://mockgatehub.testnet.test](https://mockgatehub.testnet.test) - Mock GateHub service used for local funding and related sandbox flows. - [https://rafiki-frontend.testnet.test](https://rafiki-frontend.testnet.test) - Rafiki frontend UI. - [https://rafiki-backend.testnet.test](https://rafiki-backend.testnet.test) - Rafiki backend service. -- [https://auth.testnet.test](https://auth.testnet.test) - Local authentication service. -- [https://testnet.test](https://testnet.test) - Test Wallet frontend. -- [https://boutique.test](https://boutique.test) - Boutique frontend. diff --git a/package.json b/package.json index b6af1019f..160911fef 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,8 @@ "boutique:frontend": "pnpm --filter @boutique/frontend --", "build": "pnpm -r build", "checks": "pnpm prettier:check && pnpm lint:check", + "test": "pnpm test:unit", + "test:unit": "pnpm boutique:backend test && pnpm wallet:backend test", "clean": "pnpm clean:modules && pnpm clean:builds", "clean:builds": "find . \\( -name \"dist\" -o -name \".next\" \\) -type d -prune -exec rm -rf '{}' +", "clean:modules": "find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +", From 4b88727597b6d65085f588642162b201faab4777 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Tue, 14 Apr 2026 08:41:53 +0200 Subject: [PATCH 25/51] style: linting issues in rafiki setup file --- local/scripts/rafiki-setup.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/local/scripts/rafiki-setup.js b/local/scripts/rafiki-setup.js index d75e870c0..58acb7123 100644 --- a/local/scripts/rafiki-setup.js +++ b/local/scripts/rafiki-setup.js @@ -102,7 +102,9 @@ async function waitForRafikiHealth(env) { }) if (!response.ok) { - console.log(`Health check returned HTTP ${response.status}, retrying...`) + console.log( + `Health check returned HTTP ${response.status}, retrying...` + ) } else { const body = (await response.text()).trim() if (body.toUpperCase() === 'OK') { From 8b4e8eecff4145a56726e1443927f364f573c35d Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Tue, 14 Apr 2026 09:00:27 +0200 Subject: [PATCH 26/51] docs: cleanup instructions --- README.md | 76 ++++++++-------------- local/scripts/rafiki-setup.js | 118 +++++++++++++++++++++++++--------- 2 files changed, 117 insertions(+), 77 deletions(-) diff --git a/README.md b/README.md index dcca4fea9..d14dd5eea 100644 --- a/README.md +++ b/README.md @@ -106,17 +106,37 @@ pnpm local:help Recommended first-run startup order: ```sh -pnpm local:build # build the local Docker images first -pnpm local:hosts # add the local testnet hostnames to /etc/hosts -pnpm local:trust # trust the generated local TLS certificate -pnpm local:all # start the full local stack with Traefik enabled -pnpm local:rafiki-assets # set up the Rafiki assets after the stack is up +# Setup will do the following tasks in one go +# - Add custom hostnames to /etc/hosts (needs admin password) +# - Generate self signed certificates for local env SSL +# - Add self signed certificates to OS cert store +# - Build and docker launch containers required +pnpm run local:setup + +# Starts TestNet Wallet and Boutique in development mode +pnpm run dev ``` Notes: -- `pnpm local:hosts` and `pnpm local:trust` require `sudo` on most systems. -- If certs already exist, `pnpm local:trust` reuses them. +- `pnpm local:setup` will ask for sudo password +- Setup can be re-run safely without concerns +- Configurations can be found in the `.env.local` files. +- See `.env.example` files for available environment overrides. Values placed in `.env` will override local environment. +- Boutique will not be able to transact until you set up developer keys against the TestNet Wallet and configure the `.env` file + + +Upon executing the above commands the following will be available: + +- [https://auth.testnet.test](https://auth.testnet.test) - Local authentication service. +- [https://testnet.test](https://testnet.test) - Test Wallet frontend. +- [https://api.testnet.test](https://api.testnet.test) - Wallet backend API for the local Test Wallet environment. +- [https://boutique.test](https://boutique.test) - Boutique frontend. +- [https://api.boutique.test](https://api.boutique.test) - Boutique backend API serving product and checkout functionality. +- [https://mockgatehub.testnet.test](https://mockgatehub.testnet.test) - Mock GateHub service used for local funding and related sandbox flows. +- [https://rafiki-frontend.testnet.test](https://rafiki-frontend.testnet.test) - Rafiki frontend UI. +- [https://rafiki-backend.testnet.test](https://rafiki-backend.testnet.test) - Rafiki backend service. + Common local infrastructure commands: @@ -133,44 +153,4 @@ pnpm local:trust # trust local TLS cert (auto-detect OS) pnpm local:trust:linux # trust local TLS cert on Linux pnpm local:trust:macos # trust local TLS cert on macOS pnpm local:rafiki-assets # run Rafiki asset setup script -``` - -Navigate to the project's root directory and execute: - -```sh -pnpm dev # starts core infra in Docker and runs wallet/boutique apps on your machine with local hot reload -``` - -other options to start the local env are: - -```sh -pnpm dev:debug # same app workflow as pnpm dev, but starts the core Docker stack with the debug profile -``` - -and: - -```sh -pnpm dev:lite # same app workflow as pnpm dev, but starts the core Docker stack with the lite profile -``` - -Application env files are package-local: - -```sh -packages/wallet/backend/.env -packages/wallet/frontend/.env.local -packages/boutique/backend/.env -packages/boutique/frontend/.env.local -``` - -Example files are committed next to each app as `.env.example`. - -Upon executing the above command, the following will be available: - -- [https://auth.testnet.test](https://auth.testnet.test) - Local authentication service. -- [https://testnet.test](https://testnet.test) - Test Wallet frontend. -- [https://api.testnet.test](https://api.testnet.test) - Wallet backend API for the local Test Wallet environment. -- [https://boutique.test](https://boutique.test) - Boutique frontend. -- [https://api.boutique.test](https://api.boutique.test) - Boutique backend API serving product and checkout functionality. -- [https://mockgatehub.testnet.test](https://mockgatehub.testnet.test) - Mock GateHub service used for local funding and related sandbox flows. -- [https://rafiki-frontend.testnet.test](https://rafiki-frontend.testnet.test) - Rafiki frontend UI. -- [https://rafiki-backend.testnet.test](https://rafiki-backend.testnet.test) - Rafiki backend service. +``` \ No newline at end of file diff --git a/local/scripts/rafiki-setup.js b/local/scripts/rafiki-setup.js index 58acb7123..a23e5f765 100644 --- a/local/scripts/rafiki-setup.js +++ b/local/scripts/rafiki-setup.js @@ -14,11 +14,43 @@ const path = require('path') const crypto = require('crypto') // ---- helpers --------------------------------------------------------------- +function nowIso() { + return new Date().toISOString() +} + +function logInfo(message, details) { + if (details === undefined) { + console.log(`[${nowIso()}] ${message}`) + return + } + console.log(`[${nowIso()}] ${message}`, details) +} + +function maskSecret(value) { + if (!value) { + return '' + } + if (value.length <= 4) { + return '*'.repeat(value.length) + } + return `${value.slice(0, 2)}***${value.slice(-2)}` +} + +function inferOperationName(query, operationName) { + if (operationName) { + return operationName + } + const match = query.match(/\b(query|mutation)\s+([A-Za-z0-9_]+)/) + return match?.[2] ?? 'anonymousOperation' +} + function loadDotEnv(envPath) { const result = {} if (!fs.existsSync(envPath)) { + logInfo(`No .env file found at ${envPath}, using process env/defaults`) return result } + logInfo(`Loading .env from ${envPath}`) const lines = fs.readFileSync(envPath, 'utf8').split(/\r?\n/) for (const line of lines) { if (!line || line.trim().startsWith('#')) { @@ -60,7 +92,7 @@ function buildEnv() { const fileEnv = loadDotEnv(envPath) const get = (key, fallback) => process.env[key] ?? fileEnv[key] ?? fallback - return { + const env = { GRAPHQL_ENDPOINT: get('GRAPHQL_ENDPOINT', 'http://localhost:3011/graphql'), RAFIKI_HEALTH_ENDPOINT: get( 'RAFIKI_HEALTH_ENDPOINT', @@ -81,6 +113,18 @@ function buildEnv() { 'https://testnet.test/grant-interactions' ) } + + logInfo('Resolved configuration (sensitive values masked):', { + GRAPHQL_ENDPOINT: env.GRAPHQL_ENDPOINT, + RAFIKI_HEALTH_ENDPOINT: env.RAFIKI_HEALTH_ENDPOINT, + ADMIN_SIGNATURE_VERSION: env.ADMIN_SIGNATURE_VERSION, + OPERATOR_TENANT_ID: env.OPERATOR_TENANT_ID, + IDP_CONSENT_URL: env.IDP_CONSENT_URL, + ADMIN_API_SECRET: maskSecret(env.ADMIN_API_SECRET), + AUTH_IDENTITY_SERVER_SECRET: maskSecret(env.AUTH_IDENTITY_SERVER_SECRET) + }) + + return env } function sleep(ms) { @@ -89,9 +133,10 @@ function sleep(ms) { async function waitForRafikiHealth(env) { const maxAttempts = 30 + logInfo('Waiting for Rafiki health endpoint to report OK') for (let attempt = 1; attempt <= maxAttempts; attempt++) { - console.log( + logInfo( `Checking Rafiki health (${attempt}/${maxAttempts}): ${env.RAFIKI_HEALTH_ENDPOINT}` ) @@ -102,23 +147,23 @@ async function waitForRafikiHealth(env) { }) if (!response.ok) { - console.log( + logInfo( `Health check returned HTTP ${response.status}, retrying...` ) } else { const body = (await response.text()).trim() if (body.toUpperCase() === 'OK') { - console.log('Rafiki health check passed') + logInfo('Rafiki health check passed') return } - console.log(`Health check returned '${body}', waiting for 'OK'...`) + logInfo(`Health check returned '${body}', waiting for 'OK'...`) } } catch (err) { - console.log(`Health check failed: ${err.message}`) + logInfo(`Health check failed: ${err.message}`) } if (attempt < maxAttempts) { - console.log('Rafiki not ready yet, retrying in 1 second...') + logInfo('Rafiki not ready yet, retrying in 1 second...') await sleep(1000) } } @@ -142,6 +187,8 @@ function signRequest({ query, variables, operationName }, env, timestamp) { async function graphqlRequest({ query, variables, operationName }, env) { const timestamp = Date.now() + const opName = inferOperationName(query, operationName) + logInfo(`GraphQL -> ${opName} (request signing + dispatch)`) const signature = signRequest( { query, variables, operationName }, env, @@ -159,11 +206,15 @@ async function graphqlRequest({ query, variables, operationName }, env) { body }) + logInfo(`GraphQL <- ${opName} HTTP ${response.status}`) + const data = await response.json() if (data.errors && data.errors.length) { const message = data.errors.map((e) => e.message).join('\n') + logInfo(`GraphQL !! ${opName} returned ${data.errors.length} error(s)`) throw new Error(message) } + logInfo(`GraphQL ok ${opName}`) return data.data } @@ -263,13 +314,14 @@ const assetsToEnsure = [ ] async function ensureTenant(env) { + logInfo('Step 1/3: Ensuring operator tenant exists and has correct IdP settings') try { const existing = await graphqlRequest( { query: getTenantQuery, variables: { id: env.OPERATOR_TENANT_ID } }, env ) if (existing?.tenant) { - console.log( + logInfo( `Tenant already present: ${existing.tenant.id} (consent URL ${existing.tenant.idpConsentUrl})` ) if ( @@ -277,7 +329,7 @@ async function ensureTenant(env) { !existing.tenant.idpSecret || existing.tenant.idpConsentUrl !== env.IDP_CONSENT_URL ) { - console.log('Updating tenant idp fields...') + logInfo('Tenant IdP fields are missing/stale, updating tenant...') await graphqlRequest( { query: updateTenantMutation, @@ -291,16 +343,18 @@ async function ensureTenant(env) { }, env ) - console.log('Tenant idp fields updated') + logInfo('Tenant IdP fields updated') + } else { + logInfo('Tenant IdP fields already match desired configuration') } return } } catch (err) { // continue and try to create - console.log('Tenant lookup failed, attempting to create...', err.message) + logInfo('Tenant lookup failed, attempting to create...', err.message) } - console.log('Creating tenant...') + logInfo('Creating tenant...') try { const created = await graphqlRequest( { @@ -317,13 +371,13 @@ async function ensureTenant(env) { }, env ) - console.log('Tenant created:', created.createTenant.tenant) + logInfo('Tenant created:', created.createTenant.tenant) } catch (err) { if ( typeof err.message === 'string' && err.message.toLowerCase().includes('duplicate') ) { - console.log('Tenant already exists (duplicate key), continuing...') + logInfo('Tenant already exists (duplicate key), continuing...') return } throw err @@ -331,14 +385,19 @@ async function ensureTenant(env) { } async function ensureAssets(env) { + logInfo('Step 2/3: Ensuring required assets exist') + logInfo('Target assets:', assetsToEnsure) let current = { assets: { edges: [] } } try { current = await graphqlRequest( { query: listAssetsQuery, variables: { first: 200 } }, env ) + logInfo( + `Fetched ${(current?.assets?.edges ?? []).length} existing asset(s) from Rafiki` + ) } catch (err) { - console.log( + logInfo( 'Asset list failed, continuing to create assets...', err.message ) @@ -350,10 +409,10 @@ async function ensureAssets(env) { for (const asset of assetsToEnsure) { if (existingAssets.has(`${asset.code}:${asset.scale}`)) { - console.log(`Asset ${asset.code} (scale ${asset.scale}) already exists`) + logInfo(`Asset ${asset.code} (scale ${asset.scale}) already exists`) continue } - console.log(`Creating asset ${asset.code}...`) + logInfo(`Creating asset ${asset.code}...`) try { await graphqlRequest( { @@ -367,11 +426,11 @@ async function ensureAssets(env) { }, env ) - console.log(`Asset ${asset.code} created`) + logInfo(`Asset ${asset.code} created`) } catch (err) { const msg = (err.message || '').toLowerCase() if (msg.includes('already exists') || msg.includes('duplicate')) { - console.log(`Asset ${asset.code} already exists (api), continuing...`) + logInfo(`Asset ${asset.code} already exists (api), continuing...`) continue } throw err @@ -381,7 +440,7 @@ async function ensureAssets(env) { // Deposit liquidity for all assets (100000 units per asset, converted to minor units by scale) async function ensureLiquidity(env) { - console.log('Ensuring asset liquidity...') + logInfo('Step 3/3: Ensuring asset liquidity is deposited') for (const asset of assetsToEnsure) { let node @@ -395,19 +454,19 @@ async function ensureLiquidity(env) { ) node = res?.assetByCodeAndScale } catch (err) { - console.log(`Lookup failed for ${asset.code}:`, err.message) + logInfo(`Lookup failed for ${asset.code}:`, err.message) continue } if (!node?.id) { - console.log(`Skipping liquidity for ${asset.code}: asset id not found`) + logInfo(`Skipping liquidity for ${asset.code}: asset id not found`) continue } // Amount in minor units: 100000 * 10^scale const amount = BigInt(100000) * BigInt(10) ** BigInt(node.scale) - console.log( + logInfo( `Depositing liquidity for ${asset.code}: ${amount.toString()} (scale ${node.scale})` ) try { @@ -427,12 +486,12 @@ async function ensureLiquidity(env) { ) if (!res?.depositAssetLiquidity?.success) { - console.log(`Liquidity deposit failed for ${asset.code}`) + logInfo(`Liquidity deposit failed for ${asset.code}`) } else { - console.log(`Liquidity deposited for ${asset.code}`) + logInfo(`Liquidity deposited for ${asset.code}`) } } catch (err) { - console.log(`Liquidity deposit error for ${asset.code}:`, err.message) + logInfo(`Liquidity deposit error for ${asset.code}:`, err.message) } } } @@ -440,13 +499,14 @@ async function ensureLiquidity(env) { // ---- main ----------------------------------------------------------------- ;(async function main() { const env = buildEnv() - console.log('Rafiki admin endpoint:', env.GRAPHQL_ENDPOINT) + logInfo('Starting Rafiki setup script') + logInfo('Rafiki admin endpoint:', env.GRAPHQL_ENDPOINT) await waitForRafikiHealth(env) await ensureTenant(env) await ensureAssets(env) await ensureLiquidity(env) - console.log('✅ Rafiki configuration complete') + logInfo('Rafiki configuration complete') })().catch((err) => { - console.error('Setup failed:', err.message) + console.error(`[${nowIso()}] Setup failed:`, err.message) process.exit(1) }) From 19548c8e54f2a604ee122c5c23ef79d177c517f1 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Tue, 14 Apr 2026 09:03:08 +0200 Subject: [PATCH 27/51] style: fixed linting issues introduced when I added th elogging --- README.md | 4 +--- local/scripts/rafiki-setup.js | 13 +++++-------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index d14dd5eea..4808d2bd2 100644 --- a/README.md +++ b/README.md @@ -125,7 +125,6 @@ Notes: - See `.env.example` files for available environment overrides. Values placed in `.env` will override local environment. - Boutique will not be able to transact until you set up developer keys against the TestNet Wallet and configure the `.env` file - Upon executing the above commands the following will be available: - [https://auth.testnet.test](https://auth.testnet.test) - Local authentication service. @@ -137,7 +136,6 @@ Upon executing the above commands the following will be available: - [https://rafiki-frontend.testnet.test](https://rafiki-frontend.testnet.test) - Rafiki frontend UI. - [https://rafiki-backend.testnet.test](https://rafiki-backend.testnet.test) - Rafiki backend service. - Common local infrastructure commands: ```sh @@ -153,4 +151,4 @@ pnpm local:trust # trust local TLS cert (auto-detect OS) pnpm local:trust:linux # trust local TLS cert on Linux pnpm local:trust:macos # trust local TLS cert on macOS pnpm local:rafiki-assets # run Rafiki asset setup script -``` \ No newline at end of file +``` diff --git a/local/scripts/rafiki-setup.js b/local/scripts/rafiki-setup.js index a23e5f765..cb0d5f6cf 100644 --- a/local/scripts/rafiki-setup.js +++ b/local/scripts/rafiki-setup.js @@ -147,9 +147,7 @@ async function waitForRafikiHealth(env) { }) if (!response.ok) { - logInfo( - `Health check returned HTTP ${response.status}, retrying...` - ) + logInfo(`Health check returned HTTP ${response.status}, retrying...`) } else { const body = (await response.text()).trim() if (body.toUpperCase() === 'OK') { @@ -314,7 +312,9 @@ const assetsToEnsure = [ ] async function ensureTenant(env) { - logInfo('Step 1/3: Ensuring operator tenant exists and has correct IdP settings') + logInfo( + 'Step 1/3: Ensuring operator tenant exists and has correct IdP settings' + ) try { const existing = await graphqlRequest( { query: getTenantQuery, variables: { id: env.OPERATOR_TENANT_ID } }, @@ -397,10 +397,7 @@ async function ensureAssets(env) { `Fetched ${(current?.assets?.edges ?? []).length} existing asset(s) from Rafiki` ) } catch (err) { - logInfo( - 'Asset list failed, continuing to create assets...', - err.message - ) + logInfo('Asset list failed, continuing to create assets...', err.message) } const existingAssets = new Set( From 774ec862c674b201400ed42223f696e95d6abec8 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Tue, 14 Apr 2026 09:44:17 +0200 Subject: [PATCH 28/51] fix: added validation rules to boutique config --- packages/boutique/backend/src/config/env.ts | 29 ++++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/packages/boutique/backend/src/config/env.ts b/packages/boutique/backend/src/config/env.ts index fc22bffdd..4d22da9f7 100644 --- a/packages/boutique/backend/src/config/env.ts +++ b/packages/boutique/backend/src/config/env.ts @@ -1,11 +1,26 @@ import { z } from 'zod' const requiredString = z.string().trim().min(1) -const nonPlaceholderString = requiredString.refine( - (value) => value !== 'replace-me', +const httpsUrlString = z.string().trim().url().refine( + (value) => value.startsWith('https://'), { - message: - 'Environment variable must be configured with a non-placeholder value' + message: 'PAYMENT_POINTER must be a URL starting with https:// instead of tje classic "$" format' + } +) +const base64String = requiredString.refine( + (value) => { + if (!/^[A-Za-z0-9+/]+={0,2}$/.test(value) || value.length % 4 !== 0) { + return false + } + + try { + return Buffer.from(value, 'base64').toString('base64') === value + } catch { + return false + } + }, + { + message: 'PRIVATE_KEY must be a valid base64-encoded string' } ) @@ -14,9 +29,9 @@ const envSchema = z.object({ NODE_ENV: z.string().min(1), FRONTEND_URL: z.string().url(), DATABASE_URL: z.string().url(), - PAYMENT_POINTER: nonPlaceholderString, - KEY_ID: nonPlaceholderString, - PRIVATE_KEY: nonPlaceholderString, + PAYMENT_POINTER: httpsUrlString, + KEY_ID: requiredString, + PRIVATE_KEY: base64String, REDIS_URL: z.string().url(), USE_HTTP_FOR_OPEN_PAYMENTS: z.boolean().optional() }) From 1b6cea40a39ea1e8eafd590d398d7e4189f069e8 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Tue, 14 Apr 2026 11:20:43 +0200 Subject: [PATCH 29/51] style: fixed linting --- packages/boutique/backend/src/config/env.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/boutique/backend/src/config/env.ts b/packages/boutique/backend/src/config/env.ts index 4d22da9f7..48496f090 100644 --- a/packages/boutique/backend/src/config/env.ts +++ b/packages/boutique/backend/src/config/env.ts @@ -1,12 +1,14 @@ import { z } from 'zod' const requiredString = z.string().trim().min(1) -const httpsUrlString = z.string().trim().url().refine( - (value) => value.startsWith('https://'), - { - message: 'PAYMENT_POINTER must be a URL starting with https:// instead of tje classic "$" format' - } -) +const httpsUrlString = z + .string() + .trim() + .url() + .refine((value) => value.startsWith('https://'), { + message: + 'PAYMENT_POINTER must be a URL starting with https:// instead of tje classic "$" format' + }) const base64String = requiredString.refine( (value) => { if (!/^[A-Za-z0-9+/]+={0,2}$/.test(value) || value.length % 4 !== 0) { From 89e04d06b930c10464f41535741a8c80b87d78ad Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Tue, 14 Apr 2026 11:25:27 +0200 Subject: [PATCH 30/51] style: prettier --- packages/wallet/frontend/next.config.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/wallet/frontend/next.config.js b/packages/wallet/frontend/next.config.js index 238b4b217..c58c04672 100644 --- a/packages/wallet/frontend/next.config.js +++ b/packages/wallet/frontend/next.config.js @@ -2,6 +2,12 @@ const withBundleAnalyzer = require('@next/bundle-analyzer')({ enabled: process.env.ANALYZE === 'true' }) +if (!process.env.NEXT_PUBLIC_BACKEND_URL) { + throw new Error( + 'Missing required environment variable: NEXT_PUBLIC_BACKEND_URL' + ) +} + // Default to env override; fall back to previous production/sandbox rule, then to 'true' let NEXT_PUBLIC_FEATURES_ENABLED = process.env.NEXT_PUBLIC_FEATURES_ENABLED @@ -24,18 +30,12 @@ const nextConfig = { // passes internally. Linting is handled separately via `pnpm lint:check`. eslint: { ignoreDuringBuilds: true }, env: { - NEXT_PUBLIC_BACKEND_URL: - process.env.NEXT_PUBLIC_BACKEND_URL || 'https://api.testnet.test', + NEXT_PUBLIC_BACKEND_URL: process.env.NEXT_PUBLIC_BACKEND_URL, // Internal URL for server-side (middleware) to reach the host backend. BACKEND_INTERNAL_URL: - process.env.BACKEND_INTERNAL_URL || - process.env.BACKEND_URL || - 'http://localhost:3003', - NEXT_PUBLIC_OPEN_PAYMENTS_HOST: - process.env.NEXT_PUBLIC_OPEN_PAYMENTS_HOST || - 'https://rafiki-backend.testnet.test', - NEXT_PUBLIC_AUTH_HOST: - process.env.NEXT_PUBLIC_AUTH_HOST || 'https://auth.testnet.test', + process.env.BACKEND_INTERNAL_URL || process.env.BACKEND_URL, + NEXT_PUBLIC_OPEN_PAYMENTS_HOST: process.env.NEXT_PUBLIC_OPEN_PAYMENTS_HOST, + NEXT_PUBLIC_AUTH_HOST: process.env.NEXT_PUBLIC_AUTH_HOST, NEXT_PUBLIC_THEME: process.env.NEXT_PUBLIC_THEME || 'light', NEXT_PUBLIC_GATEHUB_ENV: process.env.NEXT_PUBLIC_GATEHUB_ENV || 'sandbox', NEXT_PUBLIC_FEATURES_ENABLED From f3d8dcadf265051b5d2488a00c1ee78a9c83457b Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Tue, 14 Apr 2026 11:29:40 +0200 Subject: [PATCH 31/51] fix: removed hardcoded interledger.cards --- .../wallet/backend/src/middleware/withSession.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/wallet/backend/src/middleware/withSession.ts b/packages/wallet/backend/src/middleware/withSession.ts index 20c16cf97..9590522d3 100644 --- a/packages/wallet/backend/src/middleware/withSession.ts +++ b/packages/wallet/backend/src/middleware/withSession.ts @@ -13,14 +13,16 @@ import { // api.testnet.test can legitimately issue Domain=testnet.test and the browser // will send it back to both testnet.test and api.testnet.test. let domain: string | undefined = undefined -if (env.NODE_ENV === 'production' && env.GATEHUB_ENV === 'production') { - domain = 'interledger.cards' -} else if ( - env.RAFIKI_MONEY_FRONTEND_HOST && - env.RAFIKI_MONEY_FRONTEND_HOST !== 'localhost' -) { - domain = env.RAFIKI_MONEY_FRONTEND_HOST +domain = env.RAFIKI_MONEY_FRONTEND_HOST +// Fail fast if domain is not set or empty +if (!domain || domain.trim() === '') { + console.error( + 'RAFIKI_MONEY_FRONTEND_HOST environment variable is not set or empty' + ) + process.exit(1) } +// Remove protocol and trailing slashes if present +domain = domain.replace(/^https?:\/\//, '').replace(/\/+$/, '') export const SESSION_OPTIONS: SessionOptions = { password: env.COOKIE_PASSWORD, From c733023e2d32b7afa23363c61d9192aee9a5e534 Mon Sep 17 00:00:00 2001 From: dragosp1011 Date: Tue, 14 Apr 2026 15:45:40 +0300 Subject: [PATCH 32/51] fix: update dev start --- packages/wallet/backend/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/wallet/backend/package.json b/packages/wallet/backend/package.json index e29351164..a032fb494 100644 --- a/packages/wallet/backend/package.json +++ b/packages/wallet/backend/package.json @@ -4,7 +4,7 @@ "start": "sh -c 'set --; [ -f .env.local ] && set -- \"$@\" --env-file=.env.local; [ -f .env ] && set -- \"$@\" --env-file=.env; node \"$@\" -r tsconfig-paths/register dist/index.js'", "build:deps": "pnpm --filter @shared/backend build && pnpm --filter @wallet/shared build", "build": "pnpm build:deps && tsc --build tsconfig.build.json && tsc-alias -p tsconfig.build.json", - "dev": "nodemon --watch ./src --watch ../shared/src --ext ts,json --delay 1 --exec \"sh -c 'set --; [ -f .env.local ] && set -- \\\"$@\\\" --env-file=.env.local; [ -f .env ] && set -- \\\"$@\\\" --env-file=.env; pnpm run build && node \\\"$@\\\" ./dist/index.js'\"", + "dev": "nodemon --watch ./src --watch ../shared/src --ext ts,json --delay 1 --exec \"sh -c 'set --; [ -f .env.local ] && set -- \\$@ --env-file=.env.local; [ -f .env ] && set -- \\$@ --env-file=.env; pnpm run build && node \\$@ ./dist/index.js'\"", "test": "jest --passWithNoTests --maxWorkers=75%", "generate": "graphql-codegen --config codegen.yml" }, From 16199e330c820956e44d8b1e4b11f19094cd37a0 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Tue, 14 Apr 2026 14:55:05 +0200 Subject: [PATCH 33/51] fix: flaky tests resolution --- packages/wallet/backend/src/rafiki/service.ts | 7 ++++- .../backend/src/walletAddress/service.ts | 7 ++++- .../backend/tests/auth/controller.test.ts | 29 ++++++++++++++----- .../backend/tests/gatehub/service.test.ts | 4 ++- 4 files changed, 36 insertions(+), 11 deletions(-) diff --git a/packages/wallet/backend/src/rafiki/service.ts b/packages/wallet/backend/src/rafiki/service.ts index 33cc9d391..706223316 100644 --- a/packages/wallet/backend/src/rafiki/service.ts +++ b/packages/wallet/backend/src/rafiki/service.ts @@ -447,9 +447,14 @@ export class RafikiService implements IRafikiService { id: string ): Promise { try { + // Incoming payment identifiers are expected to use HTTPS URLs. + const openPaymentsIdentifierHost = this.env.OPEN_PAYMENTS_HOST.replace( + /^http:\/\//, + 'https://' + ) const outgoingPayments = await this.rafikiClient.getOutgoingPaymentsByReceiver( - `${this.env.OPEN_PAYMENTS_HOST}/incoming-payments/${id}` + `${openPaymentsIdentifierHost}/incoming-payments/${id}` ) const walletAddressIds = outgoingPayments.map( diff --git a/packages/wallet/backend/src/walletAddress/service.ts b/packages/wallet/backend/src/walletAddress/service.ts index 684b50eeb..db66ab960 100644 --- a/packages/wallet/backend/src/walletAddress/service.ts +++ b/packages/wallet/backend/src/walletAddress/service.ts @@ -89,7 +89,12 @@ export class WalletAddressService implements IWalletAddressService { args.accountId, args.userId ) - const url = `${this.env.OPEN_PAYMENTS_HOST}/${args.walletAddressName}` + // Rafiki validates wallet-address identifiers as HTTPS URLs. + const openPaymentsIdentifierHost = this.env.OPEN_PAYMENTS_HOST.replace( + /^http:\/\//, + 'https://' + ) + const url = `${openPaymentsIdentifierHost}/${args.walletAddressName}` let walletAddress = await WalletAddress.query().findOne({ url }) if (walletAddress) { diff --git a/packages/wallet/backend/tests/auth/controller.test.ts b/packages/wallet/backend/tests/auth/controller.test.ts index a9fcaef03..3e91ad573 100644 --- a/packages/wallet/backend/tests/auth/controller.test.ts +++ b/packages/wallet/backend/tests/auth/controller.test.ts @@ -18,7 +18,6 @@ import { withSession } from '@/middleware/withSession' import { getRedisClient } from '@/config/redis' import { rateLimiterLogin, rateLimiterEmail } from '@/middleware/rateLimit' import type { UserService } from '@/user/service' -import type { EmailService } from '@/email/service' import { fakeLoginData, mockGateHubClient, @@ -38,7 +37,6 @@ describe('Authentication Controller', (): void => { let authService: AuthService let authController: AuthController let userService: UserService - let emailService: EmailService let req: MockRequest let res: MockResponse @@ -52,7 +50,6 @@ describe('Authentication Controller', (): void => { authService = await bindings.resolve('authService') authController = await bindings.resolve('authController') userService = await bindings.resolve('userService') - emailService = await bindings.resolve('emailService') Reflect.set( userService, @@ -62,6 +59,7 @@ describe('Authentication Controller', (): void => { }) beforeEach(async (): Promise => { + jest.clearAllMocks() res = createResponse() req = createRequest() }) @@ -80,9 +78,21 @@ describe('Authentication Controller', (): void => { describe('Sign Up', (): void => { it('should return status 201 if the user is created', async (): Promise => { req.body = mockSignUpRequest().body - jest.spyOn(emailService, 'verifyDomain').mockResolvedValueOnce(undefined) + const controllerAuthService = Reflect.get( + authController, + 'authService' + ) as AuthService + const signUpSpy = jest + .spyOn(controllerAuthService, 'signUp') + .mockResolvedValueOnce({} as never) + await authController.signUp(req, res, next) + expect(signUpSpy).toHaveBeenCalledWith({ + email: req.body.email, + password: req.body.password, + acceptedCardTerms: req.body.acceptedCardTerms + }) expect(next).toHaveBeenCalledTimes(0) expect(res.statusCode).toBe(201) expect(res._getJSONData()).toMatchObject({ @@ -111,17 +121,20 @@ describe('Authentication Controller', (): void => { it('should return status 500 on unexpected error', async (): Promise => { req.body = mockSignUpRequest().body - jest.spyOn(emailService, 'verifyDomain').mockResolvedValueOnce(undefined) + const controllerAuthService = Reflect.get( + authController, + 'authService' + ) as AuthService - const createSpy = jest - .spyOn(userService, 'create') + const signUpSpy = jest + .spyOn(controllerAuthService, 'signUp') .mockRejectedValueOnce(new Error('Unexpected error')) await authController.signUp(req, res, (err) => { next() errorHandler(err, req, res, next) }) - expect(createSpy).toHaveBeenCalledTimes(1) + expect(signUpSpy).toHaveBeenCalledTimes(1) expect(next).toHaveBeenCalledTimes(1) expect(res.statusCode).toBe(500) expect(res._getJSONData()).toMatchObject({ diff --git a/packages/wallet/backend/tests/gatehub/service.test.ts b/packages/wallet/backend/tests/gatehub/service.test.ts index 9eeeae849..3d48c913d 100644 --- a/packages/wallet/backend/tests/gatehub/service.test.ts +++ b/packages/wallet/backend/tests/gatehub/service.test.ts @@ -443,7 +443,9 @@ describe('GateHub Service', (): void => { { email: 'user2@example.com' } ]) - expect(gateHubService.addUserToGateway(user.id)).rejects.toThrowError( + await expect( + gateHubService.addUserToGateway(user.id) + ).rejects.toThrowError( `GateHub user with email ${user.email} not found` ) }) From c695f794ec7ab752471285056d3839b13a41b7ec Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Tue, 14 Apr 2026 15:45:51 +0200 Subject: [PATCH 34/51] fix: backends will not fail silently --- packages/boutique/backend/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/boutique/backend/package.json b/packages/boutique/backend/package.json index 693af3f37..eba353ae5 100644 --- a/packages/boutique/backend/package.json +++ b/packages/boutique/backend/package.json @@ -4,7 +4,7 @@ "start": "sh -c 'set --; [ -f .env.local ] && set -- \"$@\" --env-file=.env.local; [ -f .env ] && set -- \"$@\" --env-file=.env; node \"$@\" dist/index.js'", "build:deps": "pnpm --filter @shared/backend build && pnpm --filter @boutique/shared build", "build": "pnpm build:deps && tsc --build tsconfig.build.json && tsc-alias -p tsconfig.build.json", - "dev": "nodemon --watch ./src --watch ../shared/src --ext ts,json --delay 0.5 --exec \"sh -c 'set --; [ -f .env.local ] && set -- \\\"$@\\\" --env-file=.env.local; [ -f .env ] && set -- \\\"$@\\\" --env-file=.env; pnpm run build && node \\\"$@\\\" ./dist/index.js'\"", + "dev": "nodemon --watch ./src --watch ../shared/src --ext ts,json --delay 0.5 --exec \"sh -c 'set --; [ -f .env.local ] && set -- \\$@ --env-file=.env.local; [ -f .env ] && set -- \\$@ --env-file=.env; pnpm run build && node \\$@ ./dist/index.js'\"", "test": "pnpm build:deps && NODE_OPTIONS='--experimental-vm-modules' jest --passWithNoTests --maxWorkers=2" }, "dependencies": { From 64efbdfed30933b72afced5c1768b2ee5467d49c Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Wed, 15 Apr 2026 09:35:41 +0200 Subject: [PATCH 35/51] fix: correcting secrets --- local/.env.local | 77 +++++++++++--- local/mockgatehub.yaml | 10 +- local/rafiki.yaml | 133 +++++++++++++----------- local/scripts/local-tools.sh | 10 +- package.json | 4 +- packages/boutique/frontend/.env.local | 2 +- packages/wallet/backend/.env.example | 2 +- packages/wallet/backend/.env.local | 19 ++-- packages/wallet/frontend/.env.example | 14 ++- packages/wallet/frontend/.env.local | 2 +- packages/wallet/frontend/next.config.js | 2 + 11 files changed, 179 insertions(+), 96 deletions(-) diff --git a/local/.env.local b/local/.env.local index c5c98adff..fcf9ef624 100644 --- a/local/.env.local +++ b/local/.env.local @@ -6,37 +6,88 @@ NODE_ENV=development REDIS_URL=redis://redis:6379/0 # Shared secrets used by the core local stack. +AUTH_IDENTITY_SERVER_URL=https://testnet.test/grant-interactions AUTH_IDENTITY_SERVER_SECRET=dev_identity_server_secret -ADMIN_API_SECRET=secret-key +AUTH_COOKIE_KEY=8fd398393c47dd27a3167d9c081c094f + ADMIN_SIGNATURE_VERSION=1 OPERATOR_TENANT_ID=f829c064-762a-4430-ac5d-7af5df198551 RAFIKI_SIGNATURE_SECRET=327132b5-99e9-4eb8-8a25-2b7d7738ece1 -GATEHUB_API_BASE_URL=http://mockgatehub:8080 -GATEHUB_ENV=sandbox -GATEHUB_IFRAME_MANAGED_RAMP_URL=http://localhost:8080 -GATEHUB_IFRAME_EXCHANGE_URL=http://localhost:8080 -GATEHUB_IFRAME_ONBOARDING_URL=http://localhost:8080 +GATEHUB_WEBHOOK_SECRET=6d6f636b5f776562686f6f6b5f736563726574 GATEHUB_ACCESS_KEY=mock_access_key GATEHUB_SECRET_KEY=mock_secret_key -GATEHUB_WEBHOOK_SECRET=6d6f636b5f776562686f6f6b5f736563726574 -GATEHUB_GATEWAY_UUID=mock-gateway-uuid -GATEHUB_SETTLEMENT_WALLET_ADDRESS=$ilp.interledger-test.dev/interledger -GATEHUB_ORG_ID=mock-org-id -GATEHUB_CARD_APP_ID=mock-card-app-id + +RAFIKI_ADMIN_API_SECRET=secret-key +RAFIKI_ADMIN_SIGNATURE_VERSION=1 +RAFIKI_OPERATOR_TENANT_ID=f829c064-762a-4430-ac5d-7af5df198551 +RAFIKI_GRAPHQL_URL=http://host.docker.internal:3001/graphql +RAFIKI_AUTH_SERVER_URL=https://auth.testnet.test # Rafiki public URL defaults for local wallet-address generation RAFIKI_BACKEND_OPEN_PAYMENTS_URL=https://rafiki-backend.testnet.test RAFIKI_BACKEND_WALLET_ADDRESS_URL=https://rafiki-backend.testnet.test/.well-known/pay RAFIKI_FRONTEND_OPEN_PAYMENTS_URL=https://rafiki-backend.testnet.test/ RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL=https://auth.testnet.test + RAFIKI_AUTH_TRUST_PROXY=true -RAFIKI_BACKEND_TRUST_PROXY=true +RAFIKI_AUTH_PORT=3006 +RAFIKI_AUTH_INTROSPECTION_PORT=3007 +RAFIKI_AUTH_ADMIN_PORT=3008 +RAFIKI_AUTH_LOG_LEVEL=debug +RAFIKI_AUTH_TRUST_PROXY=true + +RAFIKI_AUTH_DATABASE_URL=postgresql://rafiki_auth:rafiki_auth@postgres-local/rafiki_auth +RAFIKI_AUTH_INTERACTION_COOKIE_SAME_SITE=lax +RAFIKI_AUTH_WAIT_SECONDS=1 + +RAFIKI_BACKEND_LOG_LEVEL=debug +RAFIKI_BACKEND_ADMIN_PORT=3001 +RAFIKI_BACKEND_CONNECTOR_PORT=3002 +RAFIKI_BACKEND_OPEN_PAYMENTS_PORT=3003 + +RAFIKI_BACKEND_DATABASE_URL=postgresql://rafiki_backend:rafiki_backend@postgres-local/rafiki_backend +RAFIKI_BACKEND_USE_TIGERBEETLE=false +RAFIKI_BACKEND_NONCE_REDIS_KEY=test +RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL=https://auth.testnet.test +RAFIKI_BACKEND_AUTH_SERVER_INTROSPECTION_URL=http://rafiki-auth:3007 +RAFIKI_BACKEND_ILP_ADDRESS=test.net +RAFIKI_BACKEND_ILP_CONNECTOR_URL=http://127.0.0.1:3002 +RAFIKI_BACKEND_STREAM_SECRET=BjPXtnd00G2mRQwP/8ZpwyZASOch5sUXT5o0iR5b5wU= +RAFIKI_BACKEND_ADMIN_KEY=admin +RAFIKI_BACKEND_OPEN_PAYMENTS_URL=https://rafiki-backend.testnet.test +RAFIKI_BACKEND_WALLET_ADDRESS_URL=https://rafiki-backend.testnet.test/.well-known/pay + +RAFIKI_BACKEND_WEBHOOK_TIMEOUT=60000 +RAFIKI_SIGNATURE_SECRET=327132b5-99e9-4eb8-8a25-2b7d7738ece1 +RAFIKI_BACKEND_ENABLE_AUTO_PEERING=true +RAFIKI_BACKEND_AUTO_PEERING_SERVER_PORT=3005 +RAFIKI_BACKEND_INSTANCE_NAME=Testnet Wallet +RAFIKI_BACKEND_SLIPPAGE=0.01 +RAFIKI_BACKEND_KEY_ID=rafiki +RAFIKI_BACKEND_WALLET_ADDRESS_REDIRECT_HTML_PAGE=https://testnet.test/account?walletAddress=%ewa +RAFIKI_BACKEND_AUTH_SERVICE_API_URL=http://rafiki-auth:3011 +RAFIKI_BACKEND_CARD_SERVICE_URL=http://rafiki-card-service:3007 +RAFIKI_BACKEND_CARD_WEBHOOK_SERVICE_URL=http://rafiki-card-service:3007/webhook +RAFIKI_BACKEND_POS_SERVICE_URL=http://rafiki-pos-service:3014 +RAFIKI_BACKEND_POS_WEBHOOK_SERVICE_URL=http://rafiki-pos-service:3014/web + + # Allow local self-signed TLS for rafiki-auth when fetching wallet-address jwks from *.testnet.test. RAFIKI_AUTH_NODE_TLS_REJECT_UNAUTHORIZED=0 # Core services that call the wallet backend should target the host machine. RAFIKI_BACKEND_WEBHOOK_URL=http://host.docker.internal:3003/webhooks RAFIKI_BACKEND_EXCHANGE_RATES_URL=http://host.docker.internal:3003/rates -MOCKGATEHUB_WEBHOOK_URL=http://host.docker.internal:3003/gatehub-webhooks +RAFIKI_BACKEND_TRUST_PROXY=true + +RAFIKI_FRONTEND_PORT=3012 + +RAFIKI_FRONTEND_OPEN_PAYMENTS_URL=https://rafiki-backend.testnet.test/ +RAFIKI_FRONTEND_ENABLE_INSECURE_MESSAGE_COOKIE=true +RAFIKI_FRONTEND_AUTH_ENABLED=false +RAFIKI_FRONTEND_SIGNATURE_VERSION=1 + +MOCKGATEHUB_WEBHOOK_URL=http://host.docker.internal:3003/gatehub-webhooks +MOCKGATEHUB_REDIS_DB=1 diff --git a/local/mockgatehub.yaml b/local/mockgatehub.yaml index b01d921a8..b604e3411 100644 --- a/local/mockgatehub.yaml +++ b/local/mockgatehub.yaml @@ -6,11 +6,11 @@ services: ports: - '8080:8080' environment: - MOCKGATEHUB_REDIS_URL: ${MOCKGATEHUB_REDIS_URL:-redis://redis:6379/1} - MOCKGATEHUB_REDIS_DB: ${MOCKGATEHUB_REDIS_DB:-1} - MOCKGATEHUB_VALID_CREDENTIALS: ${GATEHUB_ACCESS_KEY:-local-test-app-id}:${GATEHUB_SECRET_KEY:-local-test-app-secret} - WEBHOOK_URL: ${MOCKGATEHUB_WEBHOOK_URL:-http://host.docker.internal:3003/gatehub-webhooks} - WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET:-6d6f636b5f776562686f6f6b5f736563726574} + MOCKGATEHUB_REDIS_URL: ${MOCKGATEHUB_REDIS_URL:-redis://redis:6379} + MOCKGATEHUB_REDIS_DB: ${MOCKGATEHUB_REDIS_DB} + MOCKGATEHUB_VALID_CREDENTIALS: ${GATEHUB_ACCESS_KEY}:${GATEHUB_SECRET_KEY} + WEBHOOK_URL: ${MOCKGATEHUB_WEBHOOK_URL} + WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET} depends_on: - redis restart: always diff --git a/local/rafiki.yaml b/local/rafiki.yaml index c7ddcafed..6bf13fb26 100644 --- a/local/rafiki.yaml +++ b/local/rafiki.yaml @@ -11,24 +11,24 @@ services: - '3008:3008' - '3009:3009' environment: - AUTH_PORT: ${RAFIKI_AUTH_PORT:-3006} - INTROSPECTION_PORT: ${RAFIKI_AUTH_INTROSPECTION_PORT:-3007} - ADMIN_PORT: ${RAFIKI_AUTH_ADMIN_PORT:-3008} - NODE_ENV: ${NODE_ENV:-development} - LOG_LEVEL: ${RAFIKI_AUTH_LOG_LEVEL:-debug} - TRUST_PROXY: ${RAFIKI_AUTH_TRUST_PROXY:-true} - NODE_TLS_REJECT_UNAUTHORIZED: ${RAFIKI_AUTH_NODE_TLS_REJECT_UNAUTHORIZED:-0} - AUTH_SERVER_URL: ${RAFIKI_AUTH_SERVER_URL:-https://auth.testnet.test} - AUTH_DATABASE_URL: ${RAFIKI_AUTH_DATABASE_URL:-postgresql://rafiki_auth:rafiki_auth@postgres-local/rafiki_auth} - IDENTITY_SERVER_URL: ${RAFIKI_AUTH_IDENTITY_SERVER_URL:-https://testnet.test/grant-interactions} - IDENTITY_SERVER_SECRET: ${AUTH_IDENTITY_SERVER_SECRET:-auth-secret-key-12345} - COOKIE_KEY: ${AUTH_COOKIE_KEY:-8fd398393c47dd27a3167d9c081c094f} - INTERACTION_COOKIE_SAME_SITE: ${AUTH_INTERACTION_COOKIE_SAME_SITE:-lax} - WAIT_SECONDS: ${RAFIKI_AUTH_WAIT_SECONDS:-1} - REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} - OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} - ADMIN_API_SECRET: ${ADMIN_API_SECRET:-secret-key} - ADMIN_SIGNATURE_VERSION: ${ADMIN_SIGNATURE_VERSION:-1} + AUTH_PORT: ${RAFIKI_AUTH_PORT} + INTROSPECTION_PORT: ${RAFIKI_AUTH_INTROSPECTION_PORT} + ADMIN_PORT: ${RAFIKI_AUTH_ADMIN_PORT} + NODE_ENV: ${NODE_ENV} + LOG_LEVEL: ${RAFIKI_AUTH_LOG_LEVEL} + TRUST_PROXY: ${RAFIKI_AUTH_TRUST_PROXY} + NODE_TLS_REJECT_UNAUTHORIZED: ${RAFIKI_AUTH_NODE_TLS_REJECT_UNAUTHORIZED} + AUTH_SERVER_URL: ${RAFIKI_AUTH_SERVER_URL} + AUTH_DATABASE_URL: ${RAFIKI_AUTH_DATABASE_URL} + IDENTITY_SERVER_URL: ${AUTH_IDENTITY_SERVER_URL} + IDENTITY_SERVER_SECRET: ${AUTH_IDENTITY_SERVER_SECRET} + COOKIE_KEY: ${AUTH_COOKIE_KEY} + INTERACTION_COOKIE_SAME_SITE: ${RAFIKI_AUTH_INTERACTION_COOKIE_SAME_SITE} + WAIT_SECONDS: ${RAFIKI_AUTH_WAIT_SECONDS} + OPERATOR_TENANT_ID: ${RAFIKI_OPERATOR_TENANT_ID} + ADMIN_API_SECRET: ${RAFIKI_ADMIN_API_SECRET} + ADMIN_SIGNATURE_VERSION: ${RAFIKI_ADMIN_SIGNATURE_VERSION} + REDIS_URL: ${REDIS_URL} extra_hosts: - testnet.test:host-gateway - api.testnet.test:host-gateway @@ -64,49 +64,49 @@ services: volumes: - ../temp/:/workspace/temp/ ports: - - '3010:80' - '3011:3001' + - '3010:3003' - '3005:3005' - '3002:3002' networks: - testnet environment: - NODE_ENV: ${NODE_ENV:-development} + NODE_ENV: ${NODE_ENV} LOG_LEVEL: ${LOG_LEVEL:-debug} - TRUST_PROXY: ${RAFIKI_BACKEND_TRUST_PROXY:-true} - ADMIN_PORT: ${RAFIKI_BACKEND_ADMIN_PORT:-3001} - CONNECTOR_PORT: ${RAFIKI_BACKEND_CONNECTOR_PORT:-3002} - OPEN_PAYMENTS_PORT: ${RAFIKI_BACKEND_OPEN_PAYMENTS_PORT:-80} - DATABASE_URL: ${RAFIKI_BACKEND_DATABASE_URL:-postgresql://rafiki_backend:rafiki_backend@postgres-local/rafiki_backend} - USE_TIGERBEETLE: ${RAFIKI_BACKEND_USE_TIGERBEETLE:-false} - NONCE_REDIS_KEY: ${RAFIKI_BACKEND_NONCE_REDIS_KEY:-test} - AUTH_SERVER_GRANT_URL: ${RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL:-https://auth.testnet.test} - AUTH_SERVER_INTROSPECTION_URL: ${RAFIKI_BACKEND_AUTH_SERVER_INTROSPECTION_URL:-http://rafiki-auth:3007} - ILP_ADDRESS: ${RAFIKI_BACKEND_ILP_ADDRESS:-test.net} - ILP_CONNECTOR_URL: ${RAFIKI_BACKEND_ILP_CONNECTOR_URL:-http://127.0.0.1:3002} - STREAM_SECRET: ${RAFIKI_BACKEND_STREAM_SECRET:-BjPXtnd00G2mRQwP/8ZpwyZASOch5sUXT5o0iR5b5wU=} - ADMIN_KEY: ${RAFIKI_BACKEND_ADMIN_KEY:-admin} - OPEN_PAYMENTS_URL: ${RAFIKI_BACKEND_OPEN_PAYMENTS_URL:-https://rafiki-backend.testnet.test} - REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} - WALLET_ADDRESS_URL: ${RAFIKI_BACKEND_WALLET_ADDRESS_URL:-https://rafiki-backend.testnet.test/.well-known/pay} - WEBHOOK_URL: ${RAFIKI_BACKEND_WEBHOOK_URL:-http://host.docker.internal:3003/webhooks} - WEBHOOK_TIMEOUT: ${RAFIKI_BACKEND_WEBHOOK_TIMEOUT:-60000} - SIGNATURE_SECRET: ${RAFIKI_SIGNATURE_SECRET:-327132b5-99e9-4eb8-8a25-2b7d7738ece1} - EXCHANGE_RATES_URL: ${RAFIKI_BACKEND_EXCHANGE_RATES_URL:-http://host.docker.internal:3003/rates} - ENABLE_AUTO_PEERING: ${RAFIKI_BACKEND_ENABLE_AUTO_PEERING:-true} - AUTO_PEERING_SERVER_PORT: ${RAFIKI_BACKEND_AUTO_PEERING_SERVER_PORT:-3005} - INSTANCE_NAME: ${RAFIKI_BACKEND_INSTANCE_NAME:-Testnet Wallet} - SLIPPAGE: ${RAFIKI_BACKEND_SLIPPAGE:-0.01} - KEY_ID: ${RAFIKI_BACKEND_KEY_ID:-rafiki} - WALLET_ADDRESS_REDIRECT_HTML_PAGE: ${RAFIKI_BACKEND_WALLET_ADDRESS_REDIRECT_HTML_PAGE:-https://testnet.test/account?walletAddress=%ewa} - OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} - ADMIN_API_SECRET: ${ADMIN_API_SECRET:-secret-key} - ADMIN_SIGNATURE_VERSION: ${ADMIN_SIGNATURE_VERSION:-1} - AUTH_SERVICE_API_URL: ${RAFIKI_BACKEND_AUTH_SERVICE_API_URL:-http://rafiki-auth:3011} - CARD_SERVICE_URL: ${RAFIKI_BACKEND_CARD_SERVICE_URL:-http://rafiki-card-service:3007} - CARD_WEBHOOK_SERVICE_URL: ${RAFIKI_BACKEND_CARD_WEBHOOK_SERVICE_URL:-http://rafiki-card-service:3007/webhook} - POS_SERVICE_URL: ${RAFIKI_BACKEND_POS_SERVICE_URL:-http://rafiki-pos-service:3014} - POS_WEBHOOK_SERVICE_URL: ${RAFIKI_BACKEND_POS_WEBHOOK_SERVICE_URL:-http://rafiki-pos-service:3014/webhook} + TRUST_PROXY: ${RAFIKI_BACKEND_TRUST_PROXY} + ADMIN_PORT: ${RAFIKI_BACKEND_ADMIN_PORT} + CONNECTOR_PORT: ${RAFIKI_BACKEND_CONNECTOR_PORT} + OPEN_PAYMENTS_PORT: ${RAFIKI_BACKEND_OPEN_PAYMENTS_PORT} + DATABASE_URL: ${RAFIKI_BACKEND_DATABASE_URL} + USE_TIGERBEETLE: ${RAFIKI_BACKEND_USE_TIGERBEETLE} + NONCE_REDIS_KEY: ${RAFIKI_BACKEND_NONCE_REDIS_KEY} + AUTH_SERVER_GRANT_URL: ${RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL} + AUTH_SERVER_INTROSPECTION_URL: ${RAFIKI_BACKEND_AUTH_SERVER_INTROSPECTION_URL} + ILP_ADDRESS: ${RAFIKI_BACKEND_ILP_ADDRESS} + ILP_CONNECTOR_URL: ${RAFIKI_BACKEND_ILP_CONNECTOR_URL} + STREAM_SECRET: ${RAFIKI_BACKEND_STREAM_SECRET} + ADMIN_KEY: ${RAFIKI_BACKEND_ADMIN_KEY} + OPEN_PAYMENTS_URL: ${RAFIKI_BACKEND_OPEN_PAYMENTS_URL} + REDIS_URL: ${REDIS_URL} + WALLET_ADDRESS_URL: ${RAFIKI_BACKEND_WALLET_ADDRESS_URL} + WEBHOOK_URL: ${RAFIKI_BACKEND_WEBHOOK_URL} + WEBHOOK_TIMEOUT: ${RAFIKI_BACKEND_WEBHOOK_TIMEOUT} + SIGNATURE_SECRET: ${RAFIKI_SIGNATURE_SECRET} + EXCHANGE_RATES_URL: ${RAFIKI_BACKEND_EXCHANGE_RATES_URL} + ENABLE_AUTO_PEERING: ${RAFIKI_BACKEND_ENABLE_AUTO_PEERING} + AUTO_PEERING_SERVER_PORT: ${RAFIKI_BACKEND_AUTO_PEERING_SERVER_PORT} + INSTANCE_NAME: ${RAFIKI_BACKEND_INSTANCE_NAME} + SLIPPAGE: ${RAFIKI_BACKEND_SLIPPAGE} + KEY_ID: ${RAFIKI_BACKEND_KEY_ID} + WALLET_ADDRESS_REDIRECT_HTML_PAGE: ${RAFIKI_BACKEND_WALLET_ADDRESS_REDIRECT_HTML_PAGE} + OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID} + ADMIN_API_SECRET: ${RAFIKI_ADMIN_API_SECRET} + ADMIN_SIGNATURE_VERSION: ${ADMIN_SIGNATURE_VERSION} + AUTH_SERVICE_API_URL: ${RAFIKI_BACKEND_AUTH_SERVICE_API_URL} + CARD_SERVICE_URL: ${RAFIKI_BACKEND_CARD_SERVICE_URL} + CARD_WEBHOOK_SERVICE_URL: ${RAFIKI_BACKEND_CARD_WEBHOOK_SERVICE_URL} + POS_SERVICE_URL: ${RAFIKI_BACKEND_POS_SERVICE_URL} + POS_WEBHOOK_SERVICE_URL: ${RAFIKI_BACKEND_POS_WEBHOOK_SERVICE_URL} depends_on: - postgres - redis @@ -115,10 +115,19 @@ services: labels: - traefik.enable=true - traefik.docker.network=testnet + # Admin GraphQL API (port 3001) — higher priority path match + - traefik.http.routers.rafiki-backend-admin.rule=Host(`rafiki-backend.testnet.test`) && PathPrefix(`/graphql`) + - traefik.http.routers.rafiki-backend-admin.entrypoints=websecure + - traefik.http.routers.rafiki-backend-admin.tls=true + - traefik.http.routers.rafiki-backend-admin.priority=100 + - traefik.http.routers.rafiki-backend-admin.service=rafiki-backend-admin + - traefik.http.services.rafiki-backend-admin.loadbalancer.server.port=3001 + # Open Payments API (port 3003) — catch-all for everything else - traefik.http.routers.rafiki-backend.rule=Host(`rafiki-backend.testnet.test`) - traefik.http.routers.rafiki-backend.entrypoints=websecure - traefik.http.routers.rafiki-backend.tls=true - - traefik.http.services.rafiki-backend.loadbalancer.server.port=80 + - traefik.http.routers.rafiki-backend.service=rafiki-backend + - traefik.http.services.rafiki-backend.loadbalancer.server.port=3003 rafiki-frontend: container_name: rafiki-frontend-local @@ -132,12 +141,12 @@ services: networks: - testnet environment: - PORT: ${RAFIKI_FRONTEND_PORT:-3012} - GRAPHQL_URL: ${GRAPHQL_URL:-http://rafiki-backend:3001/graphql} - OPEN_PAYMENTS_URL: ${RAFIKI_FRONTEND_OPEN_PAYMENTS_URL:-https://rafiki-backend.testnet.test/} - ENABLE_INSECURE_MESSAGE_COOKIE: ${RAFIKI_FRONTEND_ENABLE_INSECURE_MESSAGE_COOKIE:-true} - AUTH_ENABLED: ${RAFIKI_FRONTEND_AUTH_ENABLED:-false} - SIGNATURE_VERSION: ${RAFIKI_FRONTEND_SIGNATURE_VERSION:-1} + PORT: ${RAFIKI_FRONTEND_PORT} + GRAPHQL_URL: ${RAFIKI_GRAPHQL_URL} + OPEN_PAYMENTS_URL: ${RAFIKI_FRONTEND_OPEN_PAYMENTS_URL} + ENABLE_INSECURE_MESSAGE_COOKIE: ${RAFIKI_FRONTEND_ENABLE_INSECURE_MESSAGE_COOKIE} + AUTH_ENABLED: ${RAFIKI_FRONTEND_AUTH_ENABLED} + SIGNATURE_VERSION: ${RAFIKI_FRONTEND_SIGNATURE_VERSION} labels: - traefik.enable=true - traefik.docker.network=testnet @@ -160,7 +169,7 @@ services: LOG_LEVEL: ${LOG_LEVEL:-debug} CARD_SERVICE_PORT: ${RAFIKI_CARD_SERVICE_PORT:-3007} REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} - GRAPHQL_URL: ${GRAPHQL_URL:-http://rafiki-backend:3001/graphql} + GRAPHQL_URL: ${RAFIKI_GRAPHQL_URL:-http://rafiki-backend:3001/graphql} TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} TENANT_SECRET: ${ADMIN_API_SECRET:-secret-key} TENANT_SIGNATURE_VERSION: ${RAFIKI_CARD_SERVICE_TENANT_SIGNATURE_VERSION:-1} diff --git a/local/scripts/local-tools.sh b/local/scripts/local-tools.sh index 00b7afcda..c334a6460 100644 --- a/local/scripts/local-tools.sh +++ b/local/scripts/local-tools.sh @@ -25,8 +25,16 @@ HOSTS=( "mockgatehub.testnet.test" ) +# If .env does not exist then create it with touch +if [[ ! -f "$LOCAL_DIR/.env" ]]; then + touch "$LOCAL_DIR/.env" +fi + compose() { - docker compose -f "$COMPOSE_FILE" "$@" + docker compose -f "$COMPOSE_FILE" \ + --env-file "$LOCAL_DIR/.env.local" \ + --env-file "$LOCAL_DIR/.env" \ + "$@" } reload_traefik_if_running() { diff --git a/package.json b/package.json index 160911fef..1cba1182f 100644 --- a/package.json +++ b/package.json @@ -25,14 +25,12 @@ "lint": "pnpm lint:check", "lint:check": "eslint --max-warnings=0 .", "lint:fix": "eslint --max-warnings=0 --fix .", - "compose": "docker compose -f ./local/docker-compose.yml", + "compose": "docker compose -f ./local/docker-compose.yml --env-file ./local/.env.local --env-file ./local/.env", "local:help": "bash ./local/scripts/local-tools.sh help", "local:all": "bash ./local/scripts/local-tools.sh all", "local:build": "pnpm compose build", "local:rebuild": "pnpm compose build --no-cache", "local:up": "pnpm compose up -d --build", - "local:up:debug": "cross-env DEV_MODE=debug pnpm compose up -d --build", - "local:up:lite": "cross-env DEV_MODE=lite pnpm compose up -d --build", "local:down": "pnpm compose down", "local:reset": "pnpm compose down -v", "local:logs": "pnpm compose logs -f", diff --git a/packages/boutique/frontend/.env.local b/packages/boutique/frontend/.env.local index 9df2f13c8..43f211d43 100644 --- a/packages/boutique/frontend/.env.local +++ b/packages/boutique/frontend/.env.local @@ -1,3 +1,3 @@ VITE_API_BASE_URL=https://api.boutique.test -VITE_THEME=light +VITE_THEME=dark VITE_CURRENCY=USD diff --git a/packages/wallet/backend/.env.example b/packages/wallet/backend/.env.example index 1b3c1f3d2..f833aa679 100644 --- a/packages/wallet/backend/.env.example +++ b/packages/wallet/backend/.env.example @@ -22,7 +22,7 @@ ## Keep these aligned with your local mock/real GateHub setup. # GATEHUB_ENV=sandbox -# GATEHUB_API_BASE_URL=http://localhost:8080 +# GATEHUB_API_BASE_URL=https://mockgatehub.testnet.test # GATEHUB_IFRAME_MANAGED_RAMP_URL=https://mockgatehub.testnet.test # GATEHUB_IFRAME_EXCHANGE_URL=https://mockgatehub.testnet.test # GATEHUB_IFRAME_ONBOARDING_URL=https://mockgatehub.testnet.test diff --git a/packages/wallet/backend/.env.local b/packages/wallet/backend/.env.local index 8d6f1364a..cee29d7b4 100644 --- a/packages/wallet/backend/.env.local +++ b/packages/wallet/backend/.env.local @@ -6,26 +6,29 @@ REDIS_URL=redis://localhost:6379/0 COOKIE_NAME=testnet.cookie COOKIE_PASSWORD=testnet.cookie.password.super.secret.ilp COOKIE_TTL=2630000 + +GATEHUB_ACCESS_KEY=mock_access_key +GATEHUB_WEBHOOK_SECRET=6d6f636b5f776562686f6f6b5f736563726574 +GATEHUB_SECRET_KEY=mock_secret_key + GATEHUB_ENV=sandbox -GATEHUB_API_BASE_URL=http://localhost:8080 +GATEHUB_API_BASE_URL=https://mockgatehub.testnet.test GATEHUB_IFRAME_MANAGED_RAMP_URL=https://mockgatehub.testnet.test GATEHUB_IFRAME_EXCHANGE_URL=https://mockgatehub.testnet.test GATEHUB_IFRAME_ONBOARDING_URL=https://mockgatehub.testnet.test -GATEHUB_ACCESS_KEY=local-test-app-id -GATEHUB_SECRET_KEY=local-test-app-secret -GATEHUB_WEBHOOK_SECRET=6d6f636b5f776562686f6f6b5f736563726574 + GATEHUB_GATEWAY_UUID=mock-gateway-uuid -GATEHUB_SETTLEMENT_WALLET_ADDRESS=$ilp.interledger-test.dev/interledger +GATEHUB_SETTLEMENT_WALLET_ADDRESS=$ilp.testnet.test/interledger GATEHUB_ORG_ID=mock-org-id GATEHUB_CARD_APP_ID=mock-card-app-id GATEHUB_ACCOUNT_PRODUCT_CODE=DEFAULT GATEHUB_CARD_PRODUCT_CODE=DEFAULT GATEHUB_NAME_ON_CARD=TestnetUser GATEHUB_CARD_PP_PREFIX=TEST -GRAPHQL_ENDPOINT=http://localhost:3011/graphql -AUTH_GRAPHQL_ENDPOINT=http://localhost:3008/graphql +GRAPHQL_ENDPOINT=https://rafiki-backend.testnet.test/graphql +AUTH_GRAPHQL_ENDPOINT=https://auth.testnet.test AUTH_DOMAIN=https://auth.testnet.test -AUTH_IDENTITY_SERVER_SECRET=auth-secret-key-12345 +AUTH_IDENTITY_SERVER_SECRET=dev_identity_server_secret RAFIKI_WEBHOOK_SIGNATURE_SECRET=327132b5-99e9-4eb8-8a25-2b7d7738ece1 ADMIN_SIGNATURE_VERSION=1 ADMIN_API_SECRET=secret-key diff --git a/packages/wallet/frontend/.env.example b/packages/wallet/frontend/.env.example index e3f7d2e33..3806aff25 100644 --- a/packages/wallet/frontend/.env.example +++ b/packages/wallet/frontend/.env.example @@ -13,6 +13,18 @@ # NEXT_PUBLIC_BACKEND_URL=https://api.testnet.test # NEXT_PUBLIC_AUTH_HOST=https://auth.testnet.test # NEXT_PUBLIC_OPEN_PAYMENTS_HOST=https://rafiki-backend.testnet.test -# NEXT_PUBLIC_GATEHUB_ENV=sandbox + # NEXT_PUBLIC_THEME=light + +######### Controlling branding and features ###################################################### +# NEXT_PUBLIC_FEATURES_ENABLED controls the wallet UI mode (frontend only): +# - true: enables "Interledger Wallet" mode (wallet branding, card/deposit-first flows, +# cards menu visibility, card-related labels in transactions, and production-style auth copy) +# - false: enables "Test Wallet" mode (test branding, test-only hints, and cards visibility +# controlled by per-user settings instead of forced-on) +# If omitted, next.config.js defaults to false only when NODE_ENV=production and NEXT_PUBLIC_GATEHUB_ENV=sandbox +# otherwise it defaults to true. + +# NODE_ENV=production +# NEXT_PUBLIC_GATEHUB_ENV=production # NEXT_PUBLIC_FEATURES_ENABLED=true diff --git a/packages/wallet/frontend/.env.local b/packages/wallet/frontend/.env.local index 769eeeeb3..a485c1d8f 100644 --- a/packages/wallet/frontend/.env.local +++ b/packages/wallet/frontend/.env.local @@ -4,5 +4,5 @@ NEXT_PUBLIC_BACKEND_URL=https://api.testnet.test NEXT_PUBLIC_AUTH_HOST=https://auth.testnet.test NEXT_PUBLIC_OPEN_PAYMENTS_HOST=https://rafiki-backend.testnet.test NEXT_PUBLIC_GATEHUB_ENV=sandbox -NEXT_PUBLIC_THEME=light +NEXT_PUBLIC_THEME=dark NEXT_PUBLIC_FEATURES_ENABLED=false diff --git a/packages/wallet/frontend/next.config.js b/packages/wallet/frontend/next.config.js index c58c04672..34f799ed1 100644 --- a/packages/wallet/frontend/next.config.js +++ b/packages/wallet/frontend/next.config.js @@ -11,6 +11,8 @@ if (!process.env.NEXT_PUBLIC_BACKEND_URL) { // Default to env override; fall back to previous production/sandbox rule, then to 'true' let NEXT_PUBLIC_FEATURES_ENABLED = process.env.NEXT_PUBLIC_FEATURES_ENABLED +// This is a gaurdrail to prevent accidentally enabling features in production when the +// env variable is not set. if (!NEXT_PUBLIC_FEATURES_ENABLED) { if ( process.env.NODE_ENV === 'production' && From fc17c6984aa8a74c8d06cf109a3e25bf898046d7 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Wed, 15 Apr 2026 15:55:41 +0200 Subject: [PATCH 36/51] fix: resolved issue where hosted balances were incorrectly calculated --- local/.env.local | 95 +- local/mockgatehub.yaml | 14 +- local/rafiki.yaml | 118 +- local/scripts/local-tools.sh | 4 - local/scripts/rafiki-setup.js | 18 +- wallet_logs.txt | 13732 ++++++++++++++++++++++++++++++++ 6 files changed, 13815 insertions(+), 166 deletions(-) create mode 100644 wallet_logs.txt diff --git a/local/.env.local b/local/.env.local index fcf9ef624..a449140b5 100644 --- a/local/.env.local +++ b/local/.env.local @@ -1,93 +1,2 @@ -DEV_MODE=true - -NODE_ENV=development - -# Redis URL used by local core services. -REDIS_URL=redis://redis:6379/0 - -# Shared secrets used by the core local stack. -AUTH_IDENTITY_SERVER_URL=https://testnet.test/grant-interactions -AUTH_IDENTITY_SERVER_SECRET=dev_identity_server_secret -AUTH_COOKIE_KEY=8fd398393c47dd27a3167d9c081c094f - -ADMIN_SIGNATURE_VERSION=1 -OPERATOR_TENANT_ID=f829c064-762a-4430-ac5d-7af5df198551 -RAFIKI_SIGNATURE_SECRET=327132b5-99e9-4eb8-8a25-2b7d7738ece1 - -GATEHUB_WEBHOOK_SECRET=6d6f636b5f776562686f6f6b5f736563726574 -GATEHUB_ACCESS_KEY=mock_access_key -GATEHUB_SECRET_KEY=mock_secret_key - -RAFIKI_ADMIN_API_SECRET=secret-key -RAFIKI_ADMIN_SIGNATURE_VERSION=1 -RAFIKI_OPERATOR_TENANT_ID=f829c064-762a-4430-ac5d-7af5df198551 -RAFIKI_GRAPHQL_URL=http://host.docker.internal:3001/graphql -RAFIKI_AUTH_SERVER_URL=https://auth.testnet.test - -# Rafiki public URL defaults for local wallet-address generation -RAFIKI_BACKEND_OPEN_PAYMENTS_URL=https://rafiki-backend.testnet.test -RAFIKI_BACKEND_WALLET_ADDRESS_URL=https://rafiki-backend.testnet.test/.well-known/pay -RAFIKI_FRONTEND_OPEN_PAYMENTS_URL=https://rafiki-backend.testnet.test/ -RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL=https://auth.testnet.test - -RAFIKI_AUTH_TRUST_PROXY=true -RAFIKI_AUTH_PORT=3006 -RAFIKI_AUTH_INTROSPECTION_PORT=3007 -RAFIKI_AUTH_ADMIN_PORT=3008 -RAFIKI_AUTH_LOG_LEVEL=debug -RAFIKI_AUTH_TRUST_PROXY=true - -RAFIKI_AUTH_DATABASE_URL=postgresql://rafiki_auth:rafiki_auth@postgres-local/rafiki_auth -RAFIKI_AUTH_INTERACTION_COOKIE_SAME_SITE=lax -RAFIKI_AUTH_WAIT_SECONDS=1 - -RAFIKI_BACKEND_LOG_LEVEL=debug -RAFIKI_BACKEND_ADMIN_PORT=3001 -RAFIKI_BACKEND_CONNECTOR_PORT=3002 -RAFIKI_BACKEND_OPEN_PAYMENTS_PORT=3003 - -RAFIKI_BACKEND_DATABASE_URL=postgresql://rafiki_backend:rafiki_backend@postgres-local/rafiki_backend -RAFIKI_BACKEND_USE_TIGERBEETLE=false -RAFIKI_BACKEND_NONCE_REDIS_KEY=test -RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL=https://auth.testnet.test -RAFIKI_BACKEND_AUTH_SERVER_INTROSPECTION_URL=http://rafiki-auth:3007 -RAFIKI_BACKEND_ILP_ADDRESS=test.net -RAFIKI_BACKEND_ILP_CONNECTOR_URL=http://127.0.0.1:3002 -RAFIKI_BACKEND_STREAM_SECRET=BjPXtnd00G2mRQwP/8ZpwyZASOch5sUXT5o0iR5b5wU= -RAFIKI_BACKEND_ADMIN_KEY=admin -RAFIKI_BACKEND_OPEN_PAYMENTS_URL=https://rafiki-backend.testnet.test -RAFIKI_BACKEND_WALLET_ADDRESS_URL=https://rafiki-backend.testnet.test/.well-known/pay - -RAFIKI_BACKEND_WEBHOOK_TIMEOUT=60000 -RAFIKI_SIGNATURE_SECRET=327132b5-99e9-4eb8-8a25-2b7d7738ece1 -RAFIKI_BACKEND_ENABLE_AUTO_PEERING=true -RAFIKI_BACKEND_AUTO_PEERING_SERVER_PORT=3005 -RAFIKI_BACKEND_INSTANCE_NAME=Testnet Wallet -RAFIKI_BACKEND_SLIPPAGE=0.01 -RAFIKI_BACKEND_KEY_ID=rafiki -RAFIKI_BACKEND_WALLET_ADDRESS_REDIRECT_HTML_PAGE=https://testnet.test/account?walletAddress=%ewa -RAFIKI_BACKEND_AUTH_SERVICE_API_URL=http://rafiki-auth:3011 -RAFIKI_BACKEND_CARD_SERVICE_URL=http://rafiki-card-service:3007 -RAFIKI_BACKEND_CARD_WEBHOOK_SERVICE_URL=http://rafiki-card-service:3007/webhook -RAFIKI_BACKEND_POS_SERVICE_URL=http://rafiki-pos-service:3014 -RAFIKI_BACKEND_POS_WEBHOOK_SERVICE_URL=http://rafiki-pos-service:3014/web - - -# Allow local self-signed TLS for rafiki-auth when fetching wallet-address jwks from *.testnet.test. -RAFIKI_AUTH_NODE_TLS_REJECT_UNAUTHORIZED=0 - -# Core services that call the wallet backend should target the host machine. -RAFIKI_BACKEND_WEBHOOK_URL=http://host.docker.internal:3003/webhooks -RAFIKI_BACKEND_EXCHANGE_RATES_URL=http://host.docker.internal:3003/rates -RAFIKI_BACKEND_TRUST_PROXY=true - -RAFIKI_FRONTEND_PORT=3012 - -RAFIKI_FRONTEND_OPEN_PAYMENTS_URL=https://rafiki-backend.testnet.test/ -RAFIKI_FRONTEND_ENABLE_INSECURE_MESSAGE_COOKIE=true -RAFIKI_FRONTEND_AUTH_ENABLED=false -RAFIKI_FRONTEND_SIGNATURE_VERSION=1 - - -MOCKGATEHUB_WEBHOOK_URL=http://host.docker.internal:3003/gatehub-webhooks -MOCKGATEHUB_REDIS_DB=1 +# All service defaults are baked into the individual compose files as ${VAR:-default}. +# Use this file to override any value for your local environment. diff --git a/local/mockgatehub.yaml b/local/mockgatehub.yaml index b604e3411..1bf4f9b10 100644 --- a/local/mockgatehub.yaml +++ b/local/mockgatehub.yaml @@ -2,15 +2,17 @@ services: # MockGatehub - Mock Gatehub API service for local development mockgatehub: container_name: mockgatehub-local - image: ghcr.io/interledger/mockgatehub:1.12.4 + image: ghcr.io/interledger/mockgatehub:1.13 ports: - '8080:8080' environment: + LOG_LEVEL: ${MOCKGATEHUB_LOG_LEVEL:-debug} MOCKGATEHUB_REDIS_URL: ${MOCKGATEHUB_REDIS_URL:-redis://redis:6379} - MOCKGATEHUB_REDIS_DB: ${MOCKGATEHUB_REDIS_DB} - MOCKGATEHUB_VALID_CREDENTIALS: ${GATEHUB_ACCESS_KEY}:${GATEHUB_SECRET_KEY} - WEBHOOK_URL: ${MOCKGATEHUB_WEBHOOK_URL} - WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET} + MOCKGATEHUB_REDIS_DB: ${MOCKGATEHUB_REDIS_DB:-3} + MOCKGATEHUB_VALID_CREDENTIALS: ${GATEHUB_ACCESS_KEY:-mock_access_key}:${GATEHUB_SECRET_KEY:-mock_secret_key} + WEBHOOK_URL: ${MOCKGATEHUB_WEBHOOK_URL:-http://host.docker.internal:3003/gatehub-webhooks} + WEBHOOK_SECRET: ${GATEHUB_WEBHOOK_SECRET:-6d6f636b5f776562686f6f6b5f736563726574} + WEBHOOK_MIN_DELAY_SEC: ${WEBHOOK_MIN_DELAY_SEC:-0.05} depends_on: - redis restart: always @@ -23,6 +25,8 @@ services: interval: 10s timeout: 5s retries: 3 + start_interval: 1s + start_period: 15s labels: - traefik.enable=true - traefik.docker.network=testnet diff --git a/local/rafiki.yaml b/local/rafiki.yaml index 6bf13fb26..7f8c6b747 100644 --- a/local/rafiki.yaml +++ b/local/rafiki.yaml @@ -11,24 +11,24 @@ services: - '3008:3008' - '3009:3009' environment: - AUTH_PORT: ${RAFIKI_AUTH_PORT} - INTROSPECTION_PORT: ${RAFIKI_AUTH_INTROSPECTION_PORT} - ADMIN_PORT: ${RAFIKI_AUTH_ADMIN_PORT} - NODE_ENV: ${NODE_ENV} - LOG_LEVEL: ${RAFIKI_AUTH_LOG_LEVEL} - TRUST_PROXY: ${RAFIKI_AUTH_TRUST_PROXY} - NODE_TLS_REJECT_UNAUTHORIZED: ${RAFIKI_AUTH_NODE_TLS_REJECT_UNAUTHORIZED} - AUTH_SERVER_URL: ${RAFIKI_AUTH_SERVER_URL} - AUTH_DATABASE_URL: ${RAFIKI_AUTH_DATABASE_URL} - IDENTITY_SERVER_URL: ${AUTH_IDENTITY_SERVER_URL} - IDENTITY_SERVER_SECRET: ${AUTH_IDENTITY_SERVER_SECRET} - COOKIE_KEY: ${AUTH_COOKIE_KEY} - INTERACTION_COOKIE_SAME_SITE: ${RAFIKI_AUTH_INTERACTION_COOKIE_SAME_SITE} - WAIT_SECONDS: ${RAFIKI_AUTH_WAIT_SECONDS} - OPERATOR_TENANT_ID: ${RAFIKI_OPERATOR_TENANT_ID} - ADMIN_API_SECRET: ${RAFIKI_ADMIN_API_SECRET} - ADMIN_SIGNATURE_VERSION: ${RAFIKI_ADMIN_SIGNATURE_VERSION} - REDIS_URL: ${REDIS_URL} + AUTH_PORT: ${RAFIKI_AUTH_PORT:-3006} + INTROSPECTION_PORT: ${RAFIKI_AUTH_INTROSPECTION_PORT:-3007} + ADMIN_PORT: ${RAFIKI_AUTH_ADMIN_PORT:-3008} + NODE_ENV: ${NODE_ENV:-development} + LOG_LEVEL: ${RAFIKI_AUTH_LOG_LEVEL:-debug} + TRUST_PROXY: ${RAFIKI_AUTH_TRUST_PROXY:-true} + NODE_TLS_REJECT_UNAUTHORIZED: ${RAFIKI_AUTH_NODE_TLS_REJECT_UNAUTHORIZED:-0} + AUTH_SERVER_URL: ${RAFIKI_AUTH_SERVER_URL:-https://auth.testnet.test} + AUTH_DATABASE_URL: ${RAFIKI_AUTH_DATABASE_URL:-postgresql://rafiki_auth:rafiki_auth@postgres-local/rafiki_auth} + IDENTITY_SERVER_URL: ${AUTH_IDENTITY_SERVER_URL:-https://testnet.test/grant-interactions} + IDENTITY_SERVER_SECRET: ${AUTH_IDENTITY_SERVER_SECRET:-dev_identity_server_secret} + COOKIE_KEY: ${AUTH_COOKIE_KEY:-8fd398393c47dd27a3167d9c081c094f} + INTERACTION_COOKIE_SAME_SITE: ${RAFIKI_AUTH_INTERACTION_COOKIE_SAME_SITE:-lax} + WAIT_SECONDS: ${RAFIKI_AUTH_WAIT_SECONDS:-1} + OPERATOR_TENANT_ID: ${RAFIKI_OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} + ADMIN_API_SECRET: ${RAFIKI_ADMIN_API_SECRET:-secret-key} + ADMIN_SIGNATURE_VERSION: ${RAFIKI_ADMIN_SIGNATURE_VERSION:-1} + REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} extra_hosts: - testnet.test:host-gateway - api.testnet.test:host-gateway @@ -71,42 +71,42 @@ services: networks: - testnet environment: - NODE_ENV: ${NODE_ENV} + NODE_ENV: ${NODE_ENV:-development} LOG_LEVEL: ${LOG_LEVEL:-debug} - TRUST_PROXY: ${RAFIKI_BACKEND_TRUST_PROXY} - ADMIN_PORT: ${RAFIKI_BACKEND_ADMIN_PORT} - CONNECTOR_PORT: ${RAFIKI_BACKEND_CONNECTOR_PORT} - OPEN_PAYMENTS_PORT: ${RAFIKI_BACKEND_OPEN_PAYMENTS_PORT} - DATABASE_URL: ${RAFIKI_BACKEND_DATABASE_URL} - USE_TIGERBEETLE: ${RAFIKI_BACKEND_USE_TIGERBEETLE} - NONCE_REDIS_KEY: ${RAFIKI_BACKEND_NONCE_REDIS_KEY} - AUTH_SERVER_GRANT_URL: ${RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL} - AUTH_SERVER_INTROSPECTION_URL: ${RAFIKI_BACKEND_AUTH_SERVER_INTROSPECTION_URL} - ILP_ADDRESS: ${RAFIKI_BACKEND_ILP_ADDRESS} - ILP_CONNECTOR_URL: ${RAFIKI_BACKEND_ILP_CONNECTOR_URL} - STREAM_SECRET: ${RAFIKI_BACKEND_STREAM_SECRET} - ADMIN_KEY: ${RAFIKI_BACKEND_ADMIN_KEY} - OPEN_PAYMENTS_URL: ${RAFIKI_BACKEND_OPEN_PAYMENTS_URL} - REDIS_URL: ${REDIS_URL} - WALLET_ADDRESS_URL: ${RAFIKI_BACKEND_WALLET_ADDRESS_URL} - WEBHOOK_URL: ${RAFIKI_BACKEND_WEBHOOK_URL} - WEBHOOK_TIMEOUT: ${RAFIKI_BACKEND_WEBHOOK_TIMEOUT} - SIGNATURE_SECRET: ${RAFIKI_SIGNATURE_SECRET} - EXCHANGE_RATES_URL: ${RAFIKI_BACKEND_EXCHANGE_RATES_URL} - ENABLE_AUTO_PEERING: ${RAFIKI_BACKEND_ENABLE_AUTO_PEERING} - AUTO_PEERING_SERVER_PORT: ${RAFIKI_BACKEND_AUTO_PEERING_SERVER_PORT} - INSTANCE_NAME: ${RAFIKI_BACKEND_INSTANCE_NAME} - SLIPPAGE: ${RAFIKI_BACKEND_SLIPPAGE} - KEY_ID: ${RAFIKI_BACKEND_KEY_ID} - WALLET_ADDRESS_REDIRECT_HTML_PAGE: ${RAFIKI_BACKEND_WALLET_ADDRESS_REDIRECT_HTML_PAGE} - OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID} - ADMIN_API_SECRET: ${RAFIKI_ADMIN_API_SECRET} - ADMIN_SIGNATURE_VERSION: ${ADMIN_SIGNATURE_VERSION} - AUTH_SERVICE_API_URL: ${RAFIKI_BACKEND_AUTH_SERVICE_API_URL} - CARD_SERVICE_URL: ${RAFIKI_BACKEND_CARD_SERVICE_URL} - CARD_WEBHOOK_SERVICE_URL: ${RAFIKI_BACKEND_CARD_WEBHOOK_SERVICE_URL} - POS_SERVICE_URL: ${RAFIKI_BACKEND_POS_SERVICE_URL} - POS_WEBHOOK_SERVICE_URL: ${RAFIKI_BACKEND_POS_WEBHOOK_SERVICE_URL} + TRUST_PROXY: ${RAFIKI_BACKEND_TRUST_PROXY:-true} + ADMIN_PORT: ${RAFIKI_BACKEND_ADMIN_PORT:-3001} + CONNECTOR_PORT: ${RAFIKI_BACKEND_CONNECTOR_PORT:-3002} + OPEN_PAYMENTS_PORT: ${RAFIKI_BACKEND_OPEN_PAYMENTS_PORT:-3003} + DATABASE_URL: ${RAFIKI_BACKEND_DATABASE_URL:-postgresql://rafiki_backend:rafiki_backend@postgres-local/rafiki_backend} + USE_TIGERBEETLE: ${RAFIKI_BACKEND_USE_TIGERBEETLE:-false} + NONCE_REDIS_KEY: ${RAFIKI_BACKEND_NONCE_REDIS_KEY:-test} + AUTH_SERVER_GRANT_URL: ${RAFIKI_BACKEND_AUTH_SERVER_GRANT_URL:-https://auth.testnet.test} + AUTH_SERVER_INTROSPECTION_URL: ${RAFIKI_BACKEND_AUTH_SERVER_INTROSPECTION_URL:-http://rafiki-auth:3007} + ILP_ADDRESS: ${RAFIKI_BACKEND_ILP_ADDRESS:-test.net} + ILP_CONNECTOR_URL: ${RAFIKI_BACKEND_ILP_CONNECTOR_URL:-http://127.0.0.1:3002} + STREAM_SECRET: ${RAFIKI_BACKEND_STREAM_SECRET:-BjPXtnd00G2mRQwP/8ZpwyZASOch5sUXT5o0iR5b5wU=} + ADMIN_KEY: ${RAFIKI_BACKEND_ADMIN_KEY:-admin} + OPEN_PAYMENTS_URL: ${RAFIKI_BACKEND_OPEN_PAYMENTS_URL:-https://rafiki-backend.testnet.test} + REDIS_URL: ${REDIS_URL:-redis://redis:6379/0} + WALLET_ADDRESS_URL: ${RAFIKI_BACKEND_WALLET_ADDRESS_URL:-https://rafiki-backend.testnet.test/.well-known/pay} + WEBHOOK_URL: ${RAFIKI_BACKEND_WEBHOOK_URL:-http://host.docker.internal:3003/webhooks} + WEBHOOK_TIMEOUT: ${RAFIKI_BACKEND_WEBHOOK_TIMEOUT:-60000} + SIGNATURE_SECRET: ${RAFIKI_SIGNATURE_SECRET:-327132b5-99e9-4eb8-8a25-2b7d7738ece1} + EXCHANGE_RATES_URL: ${RAFIKI_BACKEND_EXCHANGE_RATES_URL:-http://host.docker.internal:3003/rates} + ENABLE_AUTO_PEERING: ${RAFIKI_BACKEND_ENABLE_AUTO_PEERING:-true} + AUTO_PEERING_SERVER_PORT: ${RAFIKI_BACKEND_AUTO_PEERING_SERVER_PORT:-3005} + INSTANCE_NAME: ${RAFIKI_BACKEND_INSTANCE_NAME:-Testnet Wallet} + SLIPPAGE: ${RAFIKI_BACKEND_SLIPPAGE:-0.01} + KEY_ID: ${RAFIKI_BACKEND_KEY_ID:-rafiki} + WALLET_ADDRESS_REDIRECT_HTML_PAGE: ${RAFIKI_BACKEND_WALLET_ADDRESS_REDIRECT_HTML_PAGE:-https://testnet.test/account?walletAddress=%ewa} + OPERATOR_TENANT_ID: ${OPERATOR_TENANT_ID:-f829c064-762a-4430-ac5d-7af5df198551} + ADMIN_API_SECRET: ${RAFIKI_ADMIN_API_SECRET:-secret-key} + ADMIN_SIGNATURE_VERSION: ${ADMIN_SIGNATURE_VERSION:-1} + AUTH_SERVICE_API_URL: ${RAFIKI_BACKEND_AUTH_SERVICE_API_URL:-http://rafiki-auth:3011} + CARD_SERVICE_URL: ${RAFIKI_BACKEND_CARD_SERVICE_URL:-http://rafiki-card-service:3007} + CARD_WEBHOOK_SERVICE_URL: ${RAFIKI_BACKEND_CARD_WEBHOOK_SERVICE_URL:-http://rafiki-card-service:3007/webhook} + POS_SERVICE_URL: ${RAFIKI_BACKEND_POS_SERVICE_URL:-http://rafiki-pos-service:3014} + POS_WEBHOOK_SERVICE_URL: ${RAFIKI_BACKEND_POS_WEBHOOK_SERVICE_URL:-http://rafiki-pos-service:3014/web} depends_on: - postgres - redis @@ -141,12 +141,12 @@ services: networks: - testnet environment: - PORT: ${RAFIKI_FRONTEND_PORT} - GRAPHQL_URL: ${RAFIKI_GRAPHQL_URL} - OPEN_PAYMENTS_URL: ${RAFIKI_FRONTEND_OPEN_PAYMENTS_URL} - ENABLE_INSECURE_MESSAGE_COOKIE: ${RAFIKI_FRONTEND_ENABLE_INSECURE_MESSAGE_COOKIE} - AUTH_ENABLED: ${RAFIKI_FRONTEND_AUTH_ENABLED} - SIGNATURE_VERSION: ${RAFIKI_FRONTEND_SIGNATURE_VERSION} + PORT: ${RAFIKI_FRONTEND_PORT:-3012} + GRAPHQL_URL: ${RAFIKI_GRAPHQL_URL:-http://host.docker.internal:3001/graphql} + OPEN_PAYMENTS_URL: ${RAFIKI_FRONTEND_OPEN_PAYMENTS_URL:-https://rafiki-backend.testnet.test/} + ENABLE_INSECURE_MESSAGE_COOKIE: ${RAFIKI_FRONTEND_ENABLE_INSECURE_MESSAGE_COOKIE:-true} + AUTH_ENABLED: ${RAFIKI_FRONTEND_AUTH_ENABLED:-false} + SIGNATURE_VERSION: ${RAFIKI_FRONTEND_SIGNATURE_VERSION:-1} labels: - traefik.enable=true - traefik.docker.network=testnet diff --git a/local/scripts/local-tools.sh b/local/scripts/local-tools.sh index c334a6460..5cb2782e4 100644 --- a/local/scripts/local-tools.sh +++ b/local/scripts/local-tools.sh @@ -110,10 +110,6 @@ run_all() { run_certs echo "Bringing up docker compose services from: $COMPOSE_FILE" compose up -d - - echo - echo "Please open the following local testnet domains in your browser (with HTTPS):" - echo " - https://testnet.test" } run_hosts() { diff --git a/local/scripts/rafiki-setup.js b/local/scripts/rafiki-setup.js index cb0d5f6cf..a5afd3aca 100644 --- a/local/scripts/rafiki-setup.js +++ b/local/scripts/rafiki-setup.js @@ -132,8 +132,16 @@ function sleep(ms) { } async function waitForRafikiHealth(env) { + const initialDelayMs = 3000 const maxAttempts = 30 - logInfo('Waiting for Rafiki health endpoint to report OK') + const retryIntervalMs = 2000 + + logInfo( + `Waiting ${initialDelayMs / 1000}s for containers to initialise before polling health` + ) + await sleep(initialDelayMs) + + logInfo('Polling Rafiki health endpoint for OK') for (let attempt = 1; attempt <= maxAttempts; attempt++) { logInfo( @@ -143,7 +151,7 @@ async function waitForRafikiHealth(env) { try { const response = await fetch(env.RAFIKI_HEALTH_ENDPOINT, { method: 'GET', - signal: AbortSignal.timeout(1000) + signal: AbortSignal.timeout(2000) }) if (!response.ok) { @@ -161,13 +169,13 @@ async function waitForRafikiHealth(env) { } if (attempt < maxAttempts) { - logInfo('Rafiki not ready yet, retrying in 1 second...') - await sleep(1000) + logInfo(`Rafiki not ready yet, retrying in ${retryIntervalMs / 1000}s...`) + await sleep(retryIntervalMs) } } throw new Error( - `Rafiki health endpoint did not return OK within ${maxAttempts} seconds` + `Rafiki health endpoint did not return OK after ${initialDelayMs / 1000}s initial wait + ${maxAttempts} attempts` ) } diff --git a/wallet_logs.txt b/wallet_logs.txt new file mode 100644 index 000000000..4523321b1 --- /dev/null +++ b/wallet_logs.txt @@ -0,0 +1,13732 @@ + +> @interledger/testnet@1.0.0 dev /home/stephan/interledger/testnet +> pnpm local:up && concurrently -n "WALLET-BE,WALLET-FE,BOUTIQUE-BE,BOUTIQUE-FE" -c blue.bold,blue,red.bold,red "pnpm wallet:backend dev" "pnpm wallet:frontend dev" "pnpm boutique:backend dev" "pnpm boutique:frontend dev" + + +> @interledger/testnet@1.0.0 local:up /home/stephan/interledger/testnet +> pnpm compose up -d --build + + +> @interledger/testnet@1.0.0 compose /home/stephan/interledger/testnet +> docker compose -f ./local/docker-compose.yml --env-file ./local/.env.local --env-file ./local/.env "up" "-d" "--build" + +#0 building with "default" instance using docker driver + +#1 [mockgatehub internal] load build definition from Dockerfile +#1 transferring dockerfile: 1.13kB done +#1 DONE 0.0s + +#2 [mockgatehub internal] load metadata for docker.io/library/alpine:latest +#2 DONE 0.0s + +#3 [mockgatehub internal] load metadata for docker.io/library/golang:1.24-alpine +#3 DONE 0.0s + +#4 [mockgatehub internal] load .dockerignore +#4 transferring context: 2B done +#4 DONE 0.0s + +#5 [mockgatehub builder 1/8] FROM docker.io/library/golang:1.24-alpine +#5 DONE 0.0s + +#6 [mockgatehub stage-1 1/6] FROM docker.io/library/alpine:latest +#6 DONE 0.0s + +#7 [mockgatehub internal] load build context +#7 transferring context: 110.91kB 0.0s done +#7 DONE 0.0s + +#8 [mockgatehub stage-1 5/6] COPY --from=builder --chown=mockgatehub:mockgatehub /app/mockgatehub . +#8 CACHED + +#9 [mockgatehub stage-1 3/6] RUN addgroup -g 1000 mockgatehub && adduser -D -u 1000 -G mockgatehub mockgatehub +#9 CACHED + +#10 [mockgatehub builder 2/8] RUN apk add --no-cache git make +#10 CACHED + +#11 [mockgatehub builder 6/8] COPY . . +#11 CACHED + +#12 [mockgatehub builder 4/8] COPY go.mod go.sum ./ +#12 CACHED + +#13 [mockgatehub builder 5/8] RUN go mod download +#13 CACHED + +#14 [mockgatehub builder 8/8] RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags="-X 'main.buildTime=${BUILD_TIME:-unknown}'" -o mockgatehub ./cmd/mockgatehub +#14 CACHED + +#15 [mockgatehub builder 7/8] RUN go clean -cache +#15 CACHED + +#16 [mockgatehub stage-1 4/6] WORKDIR /app +#16 CACHED + +#17 [mockgatehub builder 3/8] WORKDIR /app +#17 CACHED + +#18 [mockgatehub stage-1 2/6] RUN apk --no-cache add ca-certificates curl tzdata +#18 CACHED + +#19 [mockgatehub stage-1 6/6] COPY --from=builder --chown=mockgatehub:mockgatehub /app/web ./web +#19 CACHED + +#20 [mockgatehub] exporting to image +#20 exporting layers done +#20 writing image sha256:14beaff46c182c63ebdf0391e37e93278b21e263b87645d25dd8d70aeb15b779 done +#20 naming to docker.io/library/local-mockgatehub done +#20 DONE 0.0s + +#21 [mockgatehub] resolving provenance for metadata file +#21 DONE 0.0s +[BOUTIQUE-BE] +[BOUTIQUE-BE] > @interledger/testnet@1.0.0 boutique:backend /home/stephan/interledger/testnet +[BOUTIQUE-BE] > pnpm --filter @boutique/backend -- "dev" +[BOUTIQUE-BE] +[BOUTIQUE-FE] +[BOUTIQUE-FE] > @interledger/testnet@1.0.0 boutique:frontend /home/stephan/interledger/testnet +[BOUTIQUE-FE] > pnpm --filter @boutique/frontend -- "dev" +[BOUTIQUE-FE] +[WALLET-BE] +[WALLET-BE] > @interledger/testnet@1.0.0 wallet:backend /home/stephan/interledger/testnet +[WALLET-BE] > pnpm --filter @wallet/backend -- "dev" +[WALLET-BE] +[WALLET-FE] +[WALLET-FE] > @interledger/testnet@1.0.0 wallet:frontend /home/stephan/interledger/testnet +[WALLET-FE] > pnpm --filter @wallet/frontend -- "dev" +[WALLET-FE] +[BOUTIQUE-BE] +[BOUTIQUE-BE] > @boutique/backend@ dev /home/stephan/interledger/testnet/packages/boutique/backend +[BOUTIQUE-BE] > nodemon --watch ./src --watch ../shared/src --ext ts,json --delay 0.5 --exec "sh -c 'set --; [ -f .env.local ] && set -- \$@ --env-file=.env.local; [ -f .env ] && set -- \$@ --env-file=.env; pnpm run build && node \$@ ./dist/index.js'" +[BOUTIQUE-BE] +[WALLET-BE] +[WALLET-BE] > @wallet/backend@ dev /home/stephan/interledger/testnet/packages/wallet/backend +[WALLET-BE] > nodemon --watch ./src --watch ../shared/src --ext ts,json --delay 1 --exec "sh -c 'set --; [ -f .env.local ] && set -- \$@ --env-file=.env.local; [ -f .env ] && set -- \$@ --env-file=.env; pnpm run build && node \$@ ./dist/index.js'" +[WALLET-BE] +[BOUTIQUE-FE] +[BOUTIQUE-FE] > @boutique/frontend@ dev /home/stephan/interledger/testnet/packages/boutique/frontend +[BOUTIQUE-FE] > vite +[BOUTIQUE-FE] +[WALLET-FE] +[WALLET-FE] > @wallet/frontend@ dev /home/stephan/interledger/testnet/packages/wallet/frontend +[WALLET-FE] > next dev -p 4003 +[WALLET-FE] +[BOUTIQUE-BE] [nodemon] 3.1.10 +[BOUTIQUE-BE] [nodemon] to restart at any time, enter `rs` +[BOUTIQUE-BE] [nodemon] watching path(s): src/**/* ../shared/src/**/* +[BOUTIQUE-BE] [nodemon] watching extensions: ts,json +[BOUTIQUE-BE] [nodemon] starting `sh -c 'set --; [ -f .env.local ] && set -- $@ --env-file=.env.local; [ -f .env ] && set -- $@ --env-file=.env; pnpm run build && node $@ ./dist/index.js'` +[WALLET-BE] [nodemon] 3.1.10 +[WALLET-BE] [nodemon] to restart at any time, enter `rs` +[WALLET-BE] [nodemon] watching path(s): src/**/* ../shared/src/**/* +[WALLET-BE] [nodemon] watching extensions: ts,json +[WALLET-BE] [nodemon] starting `sh -c 'set --; [ -f .env.local ] && set -- $@ --env-file=.env.local; [ -f .env ] && set -- $@ --env-file=.env; pnpm run build && node $@ ./dist/index.js'` +[BOUTIQUE-FE] +[BOUTIQUE-FE] VITE v5.4.20 ready in 360 ms +[BOUTIQUE-FE] +[BOUTIQUE-FE] ➜ Local: http://localhost:4004/ +[BOUTIQUE-FE] ➜ Network: http://192.168.0.38:4004/ +[BOUTIQUE-FE] ➜ Network: http://10.5.0.1:4004/ +[BOUTIQUE-BE] +[BOUTIQUE-BE] > @boutique/backend@ build /home/stephan/interledger/testnet/packages/boutique/backend +[BOUTIQUE-BE] > pnpm build:deps && tsc --build tsconfig.build.json && tsc-alias -p tsconfig.build.json +[BOUTIQUE-BE] +[WALLET-BE] +[WALLET-BE] > @wallet/backend@ build /home/stephan/interledger/testnet/packages/wallet/backend +[WALLET-BE] > pnpm build:deps && tsc --build tsconfig.build.json && tsc-alias -p tsconfig.build.json +[WALLET-BE] +[WALLET-FE] ▲ Next.js 14.2.32 +[WALLET-FE] - Local: http://localhost:4003 +[WALLET-FE] - Environments: .env.local +[WALLET-FE] +[WALLET-FE] ✓ Starting... +[BOUTIQUE-BE] +[BOUTIQUE-BE] > @boutique/backend@ build:deps /home/stephan/interledger/testnet/packages/boutique/backend +[BOUTIQUE-BE] > pnpm --filter @shared/backend build && pnpm --filter @boutique/shared build +[BOUTIQUE-BE] +[WALLET-BE] +[WALLET-BE] > @wallet/backend@ build:deps /home/stephan/interledger/testnet/packages/wallet/backend +[WALLET-BE] > pnpm --filter @shared/backend build && pnpm --filter @wallet/shared build +[WALLET-BE] +[BOUTIQUE-BE] +[BOUTIQUE-BE] > @shared/backend@1.0.0 build /home/stephan/interledger/testnet/packages/shared/backend +[BOUTIQUE-BE] > tsc --build tsconfig.build.json && tsc-alias -p tsconfig.build.json +[BOUTIQUE-BE] +[WALLET-BE] +[WALLET-BE] > @shared/backend@1.0.0 build /home/stephan/interledger/testnet/packages/shared/backend +[WALLET-BE] > tsc --build tsconfig.build.json && tsc-alias -p tsconfig.build.json +[WALLET-BE] +[BOUTIQUE-BE] +[BOUTIQUE-BE] > @boutique/shared@1.0.0 build /home/stephan/interledger/testnet/packages/boutique/shared +[BOUTIQUE-BE] > tsc --build tsconfig.build.json +[BOUTIQUE-BE] +[WALLET-BE] +[WALLET-BE] > @wallet/shared@1.0.0 build /home/stephan/interledger/testnet/packages/wallet/shared +[WALLET-BE] > tsc --build tsconfig.build.json +[WALLET-BE] +[WALLET-FE] ✓ Ready in 2.4s +[BOUTIQUE-BE] [2026-04-15 15:47:41] [info] Boutique server started on port 3004 +[WALLET-BE] [2026-04-15 15:47:41] [info] Server started on port 3003 +[WALLET-BE] [2026-04-15 15:47:41] [info] Socket Server is started... +[WALLET-BE] context: {"service":"SocketService"} +[WALLET-FE] ✓ Compiled /src/middleware in 166ms (164 modules) +[WALLET-FE] ○ Compiling / ... +[WALLET-FE] ✓ Compiled / in 932ms (757 modules) +[WALLET-BE] (node:1802943) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification. +[WALLET-BE] (Use `node --trace-warnings ...` to show where the warning was created) +[WALLET-BE] [2026-04-15 15:47:43] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "2811.22", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "2811.22", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "248.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "248.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:47:43] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "2811.22", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "2811.22", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "248.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "248.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. +[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) +[WALLET-FE] at div +[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) +[WALLET-FE] at main +[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) +[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) +[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) +[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) +[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) +[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) +[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) +[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) +[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) +[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) +[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) +[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) +[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) +[WALLET-FE] at div +[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) +[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. +[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) +[WALLET-FE] at div +[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) +[WALLET-FE] at main +[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) +[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) +[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) +[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) +[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) +[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) +[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) +[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) +[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) +[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) +[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) +[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) +[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) +[WALLET-FE] at div +[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) +[WALLET-FE] GET / 200 in 1247ms +[WALLET-FE] ⚠ Cross origin request detected from testnet.test to /_next/* resource. In a future major version of Next.js, you will need to explicitly configure "allowedDevOrigins" in next.config to allow this. +[WALLET-FE] Read more: https://nextjs.org/docs/app/api-reference/config/next-config-js/allowedDevOrigins +[WALLET-BE] [2026-04-15 15:47:43] [debug] A socket client 1a9b1834-f050-438c-95ab-3505e90fd08b is connected... +[WALLET-BE] context: {"service":"SocketService"} +[WALLET-BE] [2026-04-15 15:47:48] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "2811.22", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "2811.22", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "248.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "248.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:47:48] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "2811.22", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "2811.22", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "248.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "248.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 21ms +[WALLET-FE] ○ Compiling /account/[accountId] ... +[WALLET-FE] ✓ Compiled /account/[accountId] in 532ms (854 modules) +[WALLET-BE] [2026-04-15 15:47:50] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "2811.22", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "2811.22", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "248.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "248.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/account/4a690a81-38ac-41a8-9f1d-37e813afbe9a.json?accountId=4a690a81-38ac-41a8-9f1d-37e813afbe9a 200 in 627ms +[WALLET-BE] [2026-04-15 15:47:54] [debug] Axios POST request for https://mockgatehub.testnet.test/core/v1/transactions succeeded: +[WALLET-BE] { +[WALLET-BE] "uuid": "2a2bff52-3a3c-4058-a860-068036e3062e", +[WALLET-BE] "user_id": "49003f70-647b-47e8-bc46-07c3929b2901", +[WALLET-BE] "uid": "cb1f7955-4f0c-42c1-aedb-2db21f82a5a5", +[WALLET-BE] "amount": "333333.00", +[WALLET-BE] "total_amount": "333333.00", +[WALLET-BE] "fee": "0.00", +[WALLET-BE] "currency": "EUR", +[WALLET-BE] "vault_uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "sending_address": "", +[WALLET-BE] "receiving_address": "rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea", +[WALLET-BE] "type": 1, +[WALLET-BE] "deposit_type": "external", +[WALLET-BE] "status": 1, +[WALLET-BE] "created_at": "2026-04-15T13:47:54.689423895Z" +[WALLET-BE] } +[WALLET-BE] context: {"amount":333333,"network":8,"uid":"cb1f7955-4f0c-42c1-aedb-2db21f82a5a5","receiving_address":"rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea","vault_uuid":"a09a0a2c-1a3a-44c5-a1b9-603a6eea9341","type":1,"absolute_fee":0} +[WALLET-BE] [2026-04-15 15:47:54] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "2811.22", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "2811.22", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "333581.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "333581.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/account/4a690a81-38ac-41a8-9f1d-37e813afbe9a.json?accountId=4a690a81-38ac-41a8-9f1d-37e813afbe9a 200 in 13ms +[WALLET-BE] [2026-04-15 15:47:54] [debug] GateHub webhook event received: {"uuid":"a67c8971-b0f6-4ec7-8140-d4c45f26c10c","timestamp":"1776260874741","event_type":"core.deposit.completed","user_uuid":"49003f70-647b-47e8-bc46-07c3929b2901","environment":"sandbox","data":{"address":"rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea","amount":"333333.00","currency":"EUR","deposit_type":"external","status":"completed","transaction_id":"2a2bff52-3a3c-4058-a860-068036e3062e","tx_uuid":"2a2bff52-3a3c-4058-a860-068036e3062e"}} +[WALLET-BE] [2026-04-15 15:47:57] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "2811.22", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "2811.22", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "333581.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "333581.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:47:57] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "2811.22", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "2811.22", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "333581.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "333581.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 25ms +[WALLET-BE] [2026-04-15 15:48:02] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "2811.22", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "2811.22", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "333581.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "333581.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/account/174556d8-5185-453f-abf1-9021077d051d.json?accountId=174556d8-5185-453f-abf1-9021077d051d 200 in 16ms +[WALLET-BE] [2026-04-15 15:48:03] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "2811.22", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "2811.22", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "333581.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "333581.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:03] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "2811.22", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "2811.22", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "333581.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "333581.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 18ms +[WALLET-FE] ○ Compiling /send ... +[WALLET-FE] ✓ Compiled /send in 638ms (1145 modules) +[WALLET-BE] [2026-04-15 15:48:06] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "2811.22", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "2811.22", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "333581.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "333581.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:06] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "2811.22", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "2811.22", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "333581.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "333581.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/send.json 200 in 768ms +[WALLET-BE] [2026-04-15 15:48:08] [debug] Axios GET request for https://mockgatehub.testnet.test/rates/v1/rates/current?counter=EUR&amount=1&useAll=true succeeded: +[WALLET-BE] { +[WALLET-BE] "CAD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.6574074074074073, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "EGG": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.9259259259259258, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "EUR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "GBP": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1.1759259259259258, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "MXN": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.054629629629629625, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "PEB": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.9259259259259258, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "PKR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.003333333333333333, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "SGD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.6851851851851851, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "USD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.9259259259259258, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "XRP": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.4629629629629629, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "ZAR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.049999999999999996, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "counter": "EUR" +[WALLET-BE] } +[WALLET-BE] [2026-04-15 15:48:15] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "2811.22", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "2811.22", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "333581.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "333581.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:15] [debug] Axios GET request for https://mockgatehub.testnet.test/rates/v1/rates/current?counter=USD&amount=1&useAll=true succeeded: +[WALLET-BE] { +[WALLET-BE] "CAD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.71, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "EGG": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "EUR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1.08, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "GBP": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1.27, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "MXN": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.059, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "PEB": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "PKR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.0036, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "SGD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.74, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "USD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "XRP": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.5, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "ZAR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.054, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "counter": "USD" +[WALLET-BE] } +[WALLET-BE] [2026-04-15 15:48:16] [info] received webhook of type : incoming_payment.created for : 1a7304e4-38e6-401a-ad20-e8f90c44b1d3} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:48:17] [info] received webhook of type : outgoing_payment.created for : 9465c3d6-7eb7-4431-b2dd-05ed0b36146d} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:48:17] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "2811.22", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "2811.22", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "333581.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "333581.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:17] [info] Succesfully held 999 in rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea on outgoing_payment.created +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:48:17] [info] received webhook of type : outgoing_payment.completed for : 3e455b0d-52a3-4461-ae4a-94d143131c05} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:48:17] [debug] Axios POST request for https://mockgatehub.testnet.test/core/v1/transactions succeeded: +[WALLET-BE] { +[WALLET-BE] "uuid": "488dc7c8-8504-47ba-ab68-0e587eb710b6", +[WALLET-BE] "user_id": "49003f70-647b-47e8-bc46-07c3929b2901", +[WALLET-BE] "uid": "", +[WALLET-BE] "amount": "999.00", +[WALLET-BE] "total_amount": "999.00", +[WALLET-BE] "fee": "0.00", +[WALLET-BE] "currency": "EUR", +[WALLET-BE] "vault_uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "sending_address": "rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea", +[WALLET-BE] "receiving_address": "$ilp.testnet.test/interledger", +[WALLET-BE] "type": 2, +[WALLET-BE] "deposit_type": "hosted", +[WALLET-BE] "status": 1, +[WALLET-BE] "created_at": "2026-04-15T13:48:17.365343286Z" +[WALLET-BE] } Transfer +[WALLET-BE] context: {"amount":999,"vault_uuid":"a09a0a2c-1a3a-44c5-a1b9-603a6eea9341","sending_address":"rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea","receiving_address":"$ilp.testnet.test/interledger","type":2} +[WALLET-BE] [2026-04-15 15:48:17] [info] Updating transaction with: {"status":"COMPLETED","value":"99900"} +[WALLET-BE] context: {"service":"TransactionService"} +[WALLET-BE] [2026-04-15 15:48:17] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "2811.22", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "2811.22", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:17] [info] Succesfully transfered 999 from rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea to settlement account on outgoing_payment.completed +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:48:17] [info] received webhook of type : incoming_payment.completed for : 56233cb9-9874-4922-84a5-1a6389a371fa} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:48:17] [debug] Axios POST request for https://mockgatehub.testnet.test/core/v1/transactions succeeded: +[WALLET-BE] { +[WALLET-BE] "uuid": "4e1392ea-1330-49db-85ae-c193547bc2e9", +[WALLET-BE] "user_id": "49003f70-647b-47e8-bc46-07c3929b2901", +[WALLET-BE] "uid": "", +[WALLET-BE] "amount": "1078.92", +[WALLET-BE] "total_amount": "1078.92", +[WALLET-BE] "fee": "0.00", +[WALLET-BE] "currency": "USD", +[WALLET-BE] "vault_uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "sending_address": "$ilp.testnet.test/interledger", +[WALLET-BE] "receiving_address": "rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u", +[WALLET-BE] "type": 2, +[WALLET-BE] "deposit_type": "hosted", +[WALLET-BE] "status": 1, +[WALLET-BE] "created_at": "2026-04-15T13:48:17.383365488Z" +[WALLET-BE] } Transfer +[WALLET-BE] context: {"amount":1078.92,"vault_uuid":"450d2156-132a-4d3f-88c5-74822547658d","receiving_address":"rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u","sending_address":"$ilp.testnet.test/interledger","type":2} +[WALLET-BE] [2026-04-15 15:48:17] [info] Updating transaction with: {"status":"COMPLETED","value":"107892","secondParty":"","secondPartyWA":""} +[WALLET-BE] context: {"service":"TransactionService"} +[WALLET-BE] [2026-04-15 15:48:17] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:17] [info] Succesfully transfered 1078.92 from settlement account $ilp.testnet.test/interledger into rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:48:17] [debug] GateHub webhook event received: {"uuid":"413d67ca-a5d8-45f8-847a-e22bab504da3","timestamp":"1776260897417","event_type":"core.deposit.completed","user_uuid":"49003f70-647b-47e8-bc46-07c3929b2901","environment":"sandbox","data":{"address":"$ilp.testnet.test/interledger","amount":"999.00","currency":"EUR","deposit_type":"hosted","status":"completed","transaction_id":"488dc7c8-8504-47ba-ab68-0e587eb710b6","tx_uuid":"488dc7c8-8504-47ba-ab68-0e587eb710b6"}} +[WALLET-BE] [2026-04-15 15:48:17] [debug] GateHub webhook event received: {"uuid":"cb121729-7829-4412-9b0b-2508b5987dac","timestamp":"1776260897434","event_type":"core.deposit.completed","user_uuid":"49003f70-647b-47e8-bc46-07c3929b2901","environment":"sandbox","data":{"address":"rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u","amount":"1078.92","currency":"USD","deposit_type":"hosted","status":"completed","transaction_id":"4e1392ea-1330-49db-85ae-c193547bc2e9","tx_uuid":"4e1392ea-1330-49db-85ae-c193547bc2e9"}} +[WALLET-BE] [2026-04-15 15:48:18] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:18] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 22ms +[WALLET-BE] [2026-04-15 15:48:21] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:21] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 12ms +[WALLET-BE] [2026-04-15 15:48:22] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:22] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 20ms +[WALLET-BE] [2026-04-15 15:48:23] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:23] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/send.json 200 in 13ms +[WALLET-BE] [2026-04-15 15:48:24] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:24] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 12ms +[WALLET-BE] [2026-04-15 15:48:28] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:28] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/send.json 200 in 16ms +[WALLET-BE] [2026-04-15 15:48:37] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:37] [info] received webhook of type : incoming_payment.created for : 192e369d-f8fa-4403-9ce9-45988f63e790} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:48:38] [info] received webhook of type : outgoing_payment.created for : fd66ea95-febe-4dce-888f-9e0301ec4af1} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:48:38] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:38] [info] Succesfully held 300000 in rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea on outgoing_payment.created +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:48:38] [info] received webhook of type : outgoing_payment.failed for : d6fa655b-9a62-4995-8cd5-364981fd44fe} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:48:38] [info] Updating transaction with: {"status":"FAILED","value":"0"} +[WALLET-BE] context: {"service":"TransactionService"} +[WALLET-BE] [2026-04-15 15:48:42] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:42] [info] received webhook of type : incoming_payment.created for : 053f9caa-db1b-49cf-9314-09ea45ff9eb6} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:48:44] [info] received webhook of type : outgoing_payment.created for : ed6b60aa-511a-410c-a6c3-140dd0f66dc0} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:48:44] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:44] [info] Succesfully held 300000 in rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea on outgoing_payment.created +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:48:44] [info] received webhook of type : outgoing_payment.failed for : a3afdd84-d8c5-482b-93e1-69fff259f5f0} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:48:44] [info] Updating transaction with: {"status":"FAILED","value":"0"} +[WALLET-BE] context: {"service":"TransactionService"} +[WALLET-BE] [2026-04-15 15:48:45] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:45] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 17ms +[WALLET-BE] [2026-04-15 15:48:47] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:47] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 16ms +[WALLET-BE] [2026-04-15 15:48:48] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:48] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 15ms +[WALLET-BE] [2026-04-15 15:48:49] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:49] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/send.json 200 in 12ms +[WALLET-BE] [2026-04-15 15:48:49] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:49] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 16ms +[WALLET-BE] [2026-04-15 15:48:52] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:52] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 17ms +[WALLET-BE] [2026-04-15 15:48:54] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:54] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/send.json 200 in 13ms +[WALLET-BE] [2026-04-15 15:48:56] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:48:56] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 11ms +[WALLET-BE] [2026-04-15 15:49:14] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:49:14] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. +[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) +[WALLET-FE] at div +[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) +[WALLET-FE] at main +[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) +[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) +[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) +[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) +[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) +[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) +[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) +[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) +[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) +[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) +[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) +[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) +[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) +[WALLET-FE] at div +[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) +[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. +[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) +[WALLET-FE] at div +[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) +[WALLET-FE] at main +[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) +[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) +[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) +[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) +[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) +[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) +[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) +[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) +[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) +[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) +[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) +[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) +[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) +[WALLET-FE] at div +[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) +[WALLET-FE] GET / 200 in 44ms +[WALLET-BE] [2026-04-15 15:49:14] [debug] A socket client 1a9b1834-f050-438c-95ab-3505e90fd08b disconnected... +[WALLET-BE] context: {"service":"SocketService"} +[WALLET-BE] [2026-04-15 15:49:14] [debug] A socket client 1a9b1834-f050-438c-95ab-3505e90fd08b is connected... +[WALLET-BE] context: {"service":"SocketService"} +[WALLET-BE] [2026-04-15 15:49:15] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:49:15] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. +[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) +[WALLET-FE] at div +[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) +[WALLET-FE] at main +[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) +[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) +[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) +[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) +[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) +[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) +[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) +[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) +[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) +[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) +[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) +[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) +[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) +[WALLET-FE] at div +[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) +[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. +[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) +[WALLET-FE] at div +[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) +[WALLET-FE] at main +[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) +[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) +[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) +[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) +[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) +[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) +[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) +[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) +[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) +[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) +[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) +[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) +[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) +[WALLET-FE] at div +[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) +[WALLET-FE] GET / 200 in 27ms +[WALLET-BE] [2026-04-15 15:49:15] [debug] A socket client 1a9b1834-f050-438c-95ab-3505e90fd08b disconnected... +[WALLET-BE] context: {"service":"SocketService"} +[WALLET-BE] [2026-04-15 15:49:15] [debug] A socket client 1a9b1834-f050-438c-95ab-3505e90fd08b is connected... +[WALLET-BE] context: {"service":"SocketService"} +[WALLET-BE] [2026-04-15 15:49:15] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:49:15] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. +[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) +[WALLET-FE] at div +[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) +[WALLET-FE] at main +[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) +[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) +[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) +[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) +[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) +[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) +[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) +[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) +[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) +[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) +[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) +[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) +[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) +[WALLET-FE] at div +[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) +[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. +[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) +[WALLET-FE] at div +[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) +[WALLET-FE] at main +[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) +[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) +[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) +[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) +[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) +[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) +[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) +[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) +[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) +[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) +[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) +[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) +[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) +[WALLET-FE] at div +[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) +[WALLET-FE] GET / 200 in 51ms +[WALLET-BE] [2026-04-15 15:49:15] [debug] A socket client 1a9b1834-f050-438c-95ab-3505e90fd08b disconnected... +[WALLET-BE] context: {"service":"SocketService"} +[WALLET-BE] [2026-04-15 15:49:16] [debug] A socket client 1a9b1834-f050-438c-95ab-3505e90fd08b is connected... +[WALLET-BE] context: {"service":"SocketService"} +[WALLET-BE] [2026-04-15 15:49:16] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:49:16] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. +[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) +[WALLET-FE] at div +[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) +[WALLET-FE] at main +[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) +[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) +[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) +[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) +[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) +[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) +[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) +[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) +[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) +[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) +[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) +[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) +[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) +[WALLET-FE] at div +[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) +[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. +[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) +[WALLET-FE] at div +[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) +[WALLET-FE] at main +[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) +[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) +[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) +[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) +[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) +[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) +[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) +[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) +[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) +[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) +[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) +[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) +[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) +[WALLET-FE] at div +[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) +[WALLET-FE] GET / 200 in 28ms +[WALLET-BE] [2026-04-15 15:49:16] [debug] A socket client 1a9b1834-f050-438c-95ab-3505e90fd08b disconnected... +[WALLET-BE] context: {"service":"SocketService"} +[WALLET-BE] [2026-04-15 15:49:16] [debug] A socket client 1a9b1834-f050-438c-95ab-3505e90fd08b is connected... +[WALLET-BE] context: {"service":"SocketService"} +[WALLET-FE] ✓ Compiled /transactions in 452ms (1127 modules) +[WALLET-BE] [2026-04-15 15:49:17] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:49:17] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/transactions.json 200 in 534ms +[WALLET-BE] [2026-04-15 15:49:27] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:49:27] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 21ms +[WALLET-FE] ✓ Compiled /account/[accountId] in 136ms (1167 modules) +[WALLET-BE] [2026-04-15 15:49:40] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/account/4a690a81-38ac-41a8-9f1d-37e813afbe9a.json?accountId=4a690a81-38ac-41a8-9f1d-37e813afbe9a 200 in 205ms +[WALLET-BE] [2026-04-15 15:49:42] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:49:42] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 18ms +[WALLET-BE] [2026-04-15 15:49:43] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/account/174556d8-5185-453f-abf1-9021077d051d.json?accountId=174556d8-5185-453f-abf1-9021077d051d 200 in 19ms +[WALLET-BE] [2026-04-15 15:49:45] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:49:45] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/send.json 200 in 42ms +[WALLET-BE] [2026-04-15 15:49:47] [debug] Axios GET request for https://mockgatehub.testnet.test/rates/v1/rates/current?counter=EUR&amount=1&useAll=true succeeded: +[WALLET-BE] { +[WALLET-BE] "CAD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.6574074074074073, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "EGG": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.9259259259259258, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "EUR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "GBP": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1.1759259259259258, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "MXN": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.054629629629629625, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "PEB": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.9259259259259258, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "PKR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.003333333333333333, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "SGD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.6851851851851851, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "USD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.9259259259259258, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "XRP": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.4629629629629629, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "ZAR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.049999999999999996, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "counter": "EUR" +[WALLET-BE] } +[WALLET-BE] [2026-04-15 15:49:54] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:49:54] [debug] Axios GET request for https://mockgatehub.testnet.test/rates/v1/rates/current?counter=USD&amount=1&useAll=true succeeded: +[WALLET-BE] { +[WALLET-BE] "CAD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.71, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "EGG": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "EUR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1.08, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "GBP": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1.27, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "MXN": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.059, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "PEB": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "PKR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.0036, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "SGD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.74, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "USD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "XRP": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.5, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "ZAR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.054, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "counter": "USD" +[WALLET-BE] } +[WALLET-BE] [2026-04-15 15:49:54] [info] received webhook of type : incoming_payment.created for : 2e190ea7-f8b1-4437-8d6f-36a8367be2cd} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:49:55] [info] received webhook of type : outgoing_payment.created for : da41f8b9-cf54-4587-b728-e09c347e201a} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:49:55] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:49:55] [info] Succesfully held 100000 in rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea on outgoing_payment.created +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:49:55] [info] received webhook of type : outgoing_payment.failed for : 42ba015f-2a0c-4dda-a053-e35444e24708} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:49:55] [info] Updating transaction with: {"status":"FAILED","value":"0"} +[WALLET-BE] context: {"service":"TransactionService"} +[WALLET-BE] [2026-04-15 15:49:56] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:49:56] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 15ms +[WALLET-BE] [2026-04-15 15:49:58] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:49:58] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 22ms +[WALLET-BE] [2026-04-15 15:49:59] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:49:59] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 17ms +[WALLET-BE] [2026-04-15 15:50:01] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:50:01] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/transactions.json 200 in 28ms +[WALLET-BE] [2026-04-15 15:50:44] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:50:44] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/send.json 200 in 30ms +[WALLET-BE] [2026-04-15 15:50:55] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:50:55] [debug] Axios GET request for https://mockgatehub.testnet.test/rates/v1/rates/current?counter=EUR&amount=1&useAll=true succeeded: +[WALLET-BE] { +[WALLET-BE] "CAD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.6574074074074073, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "EGG": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.9259259259259258, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "EUR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "GBP": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1.1759259259259258, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "MXN": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.054629629629629625, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "PEB": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.9259259259259258, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "PKR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.003333333333333333, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "SGD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.6851851851851851, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "USD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.9259259259259258, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "XRP": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.4629629629629629, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "ZAR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.049999999999999996, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "counter": "EUR" +[WALLET-BE] } +[WALLET-BE] [2026-04-15 15:50:55] [debug] Axios GET request for https://mockgatehub.testnet.test/rates/v1/rates/current?counter=USD&amount=1&useAll=true succeeded: +[WALLET-BE] { +[WALLET-BE] "CAD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.71, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "EGG": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "EUR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1.08, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "GBP": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1.27, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "MXN": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.059, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "PEB": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "PKR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.0036, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "SGD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.74, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "USD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "XRP": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.5, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "ZAR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.054, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "counter": "USD" +[WALLET-BE] } +[WALLET-BE] [2026-04-15 15:50:55] [info] received webhook of type : incoming_payment.created for : c2c0d14d-65a5-4601-affe-2df3aba29c7a} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:51:01] [info] received webhook of type : outgoing_payment.created for : d60ff506-c41e-4e04-8802-54b29a63175a} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:51:01] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:51:01] [info] Succesfully held 123000 in rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea on outgoing_payment.created +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:51:01] [info] received webhook of type : outgoing_payment.failed for : db361b0d-e437-4bbc-b072-a75a6a5d54b5} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:51:01] [info] Updating transaction with: {"status":"FAILED","value":"0"} +[WALLET-BE] context: {"service":"TransactionService"} +[WALLET-BE] [2026-04-15 15:51:17] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:51:17] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", +[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 16ms +[WALLET-BE] [2026-04-15 15:53:42] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:53:42] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/send.json 200 in 19ms +[WALLET-BE] [2026-04-15 15:53:43] [debug] Axios GET request for https://mockgatehub.testnet.test/rates/v1/rates/current?counter=EUR&amount=1&useAll=true succeeded: +[WALLET-BE] { +[WALLET-BE] "CAD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.6574074074074073, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "EGG": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.9259259259259258, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "EUR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "GBP": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1.1759259259259258, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "MXN": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.054629629629629625, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "PEB": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.9259259259259258, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "PKR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.003333333333333333, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "SGD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.6851851851851851, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "USD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.9259259259259258, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "XRP": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.4629629629629629, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "ZAR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.049999999999999996, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "counter": "EUR" +[WALLET-BE] } +[WALLET-BE] [2026-04-15 15:53:55] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:53:55] [debug] Axios GET request for https://mockgatehub.testnet.test/rates/v1/rates/current?counter=USD&amount=1&useAll=true succeeded: +[WALLET-BE] { +[WALLET-BE] "CAD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.71, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "EGG": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "EUR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1.08, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "GBP": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1.27, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "MXN": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.059, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "PEB": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "PKR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.0036, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "SGD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.74, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "USD": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 1, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "XRP": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.5, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "ZAR": { +[WALLET-BE] "amount": "1", +[WALLET-BE] "change": "0", +[WALLET-BE] "rate": 0.054, +[WALLET-BE] "type": "ExchangeRate" +[WALLET-BE] }, +[WALLET-BE] "counter": "USD" +[WALLET-BE] } +[WALLET-BE] [2026-04-15 15:53:55] [info] received webhook of type : incoming_payment.created for : 8e2d3fa2-22a6-4c40-9901-d3cf246f6293} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:53:57] [info] received webhook of type : outgoing_payment.created for : b5d70781-bde2-413a-8ca4-ca6de0745063} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:53:57] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "332582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "332582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:53:57] [info] Succesfully held 50000 in rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea on outgoing_payment.created +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:53:57] [info] received webhook of type : outgoing_payment.completed for : c8ee03c5-19f0-4c02-bb59-37a6fc920f07} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:53:57] [debug] Axios POST request for https://mockgatehub.testnet.test/core/v1/transactions succeeded: +[WALLET-BE] { +[WALLET-BE] "uuid": "59e44708-66b4-4456-803a-10eebaa3254c", +[WALLET-BE] "user_id": "49003f70-647b-47e8-bc46-07c3929b2901", +[WALLET-BE] "uid": "", +[WALLET-BE] "amount": "50000.00", +[WALLET-BE] "total_amount": "50000.00", +[WALLET-BE] "fee": "0.00", +[WALLET-BE] "currency": "EUR", +[WALLET-BE] "vault_uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "sending_address": "rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea", +[WALLET-BE] "receiving_address": "$ilp.testnet.test/interledger", +[WALLET-BE] "type": 2, +[WALLET-BE] "deposit_type": "hosted", +[WALLET-BE] "status": 1, +[WALLET-BE] "created_at": "2026-04-15T13:53:57.336923173Z" +[WALLET-BE] } Transfer +[WALLET-BE] context: {"amount":50000,"vault_uuid":"a09a0a2c-1a3a-44c5-a1b9-603a6eea9341","sending_address":"rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea","receiving_address":"$ilp.testnet.test/interledger","type":2} +[WALLET-BE] [2026-04-15 15:53:57] [info] Updating transaction with: {"status":"COMPLETED","value":"5000000"} +[WALLET-BE] context: {"service":"TransactionService"} +[WALLET-BE] [2026-04-15 15:53:57] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "3890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "3890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "282582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "282582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:53:57] [info] Succesfully transfered 50000 from rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea to settlement account on outgoing_payment.completed +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:53:57] [info] received webhook of type : incoming_payment.completed for : f2574b27-572f-4fbd-b7df-059cae07d536} +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:53:57] [debug] Axios POST request for https://mockgatehub.testnet.test/core/v1/transactions succeeded: +[WALLET-BE] { +[WALLET-BE] "uuid": "07a88bd8-6e2d-4504-9b8b-f2875c37bbad", +[WALLET-BE] "user_id": "49003f70-647b-47e8-bc46-07c3929b2901", +[WALLET-BE] "uid": "", +[WALLET-BE] "amount": "54000.00", +[WALLET-BE] "total_amount": "54000.00", +[WALLET-BE] "fee": "0.00", +[WALLET-BE] "currency": "USD", +[WALLET-BE] "vault_uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "sending_address": "$ilp.testnet.test/interledger", +[WALLET-BE] "receiving_address": "rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u", +[WALLET-BE] "type": 2, +[WALLET-BE] "deposit_type": "hosted", +[WALLET-BE] "status": 1, +[WALLET-BE] "created_at": "2026-04-15T13:53:57.361087733Z" +[WALLET-BE] } Transfer +[WALLET-BE] context: {"amount":54000,"vault_uuid":"450d2156-132a-4d3f-88c5-74822547658d","receiving_address":"rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u","sending_address":"$ilp.testnet.test/interledger","type":2} +[WALLET-BE] [2026-04-15 15:53:57] [info] Updating transaction with: {"status":"COMPLETED","value":"5400000","secondParty":"","secondPartyWA":""} +[WALLET-BE] context: {"service":"TransactionService"} +[WALLET-BE] [2026-04-15 15:53:57] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "57890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "57890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "282582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "282582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:53:57] [info] Succesfully transfered 54000 from settlement account $ilp.testnet.test/interledger into rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u +[WALLET-BE] context: {"service":"RafikiService"} +[WALLET-BE] [2026-04-15 15:53:57] [debug] GateHub webhook event received: {"uuid":"23e1cf5a-ade2-4662-8739-3a7a84ef6561","timestamp":"1776261237388","event_type":"core.deposit.completed","user_uuid":"49003f70-647b-47e8-bc46-07c3929b2901","environment":"sandbox","data":{"address":"$ilp.testnet.test/interledger","amount":"50000.00","currency":"EUR","deposit_type":"hosted","status":"completed","transaction_id":"59e44708-66b4-4456-803a-10eebaa3254c","tx_uuid":"59e44708-66b4-4456-803a-10eebaa3254c"}} +[WALLET-BE] [2026-04-15 15:53:57] [debug] GateHub webhook event received: {"uuid":"012c71a7-0bdf-4798-92c7-263c66a0cf18","timestamp":"1776261237412","event_type":"core.deposit.completed","user_uuid":"49003f70-647b-47e8-bc46-07c3929b2901","environment":"sandbox","data":{"address":"rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u","amount":"54000.00","currency":"USD","deposit_type":"hosted","status":"completed","transaction_id":"07a88bd8-6e2d-4504-9b8b-f2875c37bbad","tx_uuid":"07a88bd8-6e2d-4504-9b8b-f2875c37bbad"}} +[WALLET-BE] [2026-04-15 15:53:59] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "57890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "57890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "282582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "282582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:53:59] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "57890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "57890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "282582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "282582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", +[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 15ms +[WALLET-BE] [2026-04-15 15:54:01] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "57890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "57890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "282582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "282582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-BE] [2026-04-15 15:54:01] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: +[WALLET-BE] [ +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", +[WALLET-BE] "name": "Sandbox Vault XRP", +[WALLET-BE] "asset_code": "XRP", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "57890.14", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "57890.14", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", +[WALLET-BE] "name": "Sandbox Vault USD", +[WALLET-BE] "asset_code": "USD", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "282582.86", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "282582.86", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", +[WALLET-BE] "name": "Sandbox Vault EUR", +[WALLET-BE] "asset_code": "EUR", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", +[WALLET-BE] "name": "Sandbox Vault GBP", +[WALLET-BE] "asset_code": "GBP", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", +[WALLET-BE] "name": "Sandbox Vault ZAR", +[WALLET-BE] "asset_code": "ZAR", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", +[WALLET-BE] "name": "Sandbox Vault MXN", +[WALLET-BE] "asset_code": "MXN", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", +[WALLET-BE] "name": "Sandbox Vault SGD", +[WALLET-BE] "asset_code": "SGD", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", +[WALLET-BE] "name": "Sandbox Vault CAD", +[WALLET-BE] "asset_code": "CAD", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", +[WALLET-BE] "name": "Sandbox Vault EGG", +[WALLET-BE] "asset_code": "EGG", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", +[WALLET-BE] "name": "Sandbox Vault PEB", +[WALLET-BE] "asset_code": "PEB", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] }, +[WALLET-BE] { +[WALLET-BE] "available": "0.00", +[WALLET-BE] "pending": "0.00", +[WALLET-BE] "total": "0.00", +[WALLET-BE] "vault": { +[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", +[WALLET-BE] "name": "Sandbox Vault PKR", +[WALLET-BE] "asset_code": "PKR", +[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", +[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" +[WALLET-BE] } +[WALLET-BE] } +[WALLET-BE] ] +[WALLET-FE] GET /_next/data/development/index.json 200 in 18ms +[WALLET-FE] ✓ Compiled /auth in 385ms (1115 modules) +[WALLET-FE] GET /_next/data/development/auth.json 200 in 431ms From 30d38f6b9bc1acdab264dec3138bb81f8cec11bc Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Wed, 15 Apr 2026 15:58:26 +0200 Subject: [PATCH 37/51] ci: will now pull before up --- package.json | 3 +- wallet_logs.txt | 13732 ---------------------------------------------- 2 files changed, 2 insertions(+), 13733 deletions(-) delete mode 100644 wallet_logs.txt diff --git a/package.json b/package.json index 1cba1182f..63abdd76b 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "compose": "docker compose -f ./local/docker-compose.yml --env-file ./local/.env.local --env-file ./local/.env", "local:help": "bash ./local/scripts/local-tools.sh help", "local:all": "bash ./local/scripts/local-tools.sh all", + "local:pull": "pnpm compose pull", "local:build": "pnpm compose build", "local:rebuild": "pnpm compose build --no-cache", "local:up": "pnpm compose up -d --build", @@ -37,7 +38,7 @@ "local:certs": "bash ./local/scripts/local-tools.sh certs", "local:hosts": "bash ./local/scripts/local-tools.sh hosts", "local:trust": "bash ./local/scripts/local-tools.sh trust", - "local:setup": "pnpm local:hosts && pnpm local:trust && pnpm local:all && pnpm local:rafiki-assets", + "local:setup": "pnpm compose pull && pnpm local:hosts && pnpm local:trust && pnpm local:all && pnpm local:rafiki-assets", "local:trust:macos": "bash ./local/scripts/local-tools.sh trust-macos", "local:trust:linux": "bash ./local/scripts/local-tools.sh trust-linux", "local:rafiki-assets": "node ./local/scripts/rafiki-setup.js", diff --git a/wallet_logs.txt b/wallet_logs.txt deleted file mode 100644 index 4523321b1..000000000 --- a/wallet_logs.txt +++ /dev/null @@ -1,13732 +0,0 @@ - -> @interledger/testnet@1.0.0 dev /home/stephan/interledger/testnet -> pnpm local:up && concurrently -n "WALLET-BE,WALLET-FE,BOUTIQUE-BE,BOUTIQUE-FE" -c blue.bold,blue,red.bold,red "pnpm wallet:backend dev" "pnpm wallet:frontend dev" "pnpm boutique:backend dev" "pnpm boutique:frontend dev" - - -> @interledger/testnet@1.0.0 local:up /home/stephan/interledger/testnet -> pnpm compose up -d --build - - -> @interledger/testnet@1.0.0 compose /home/stephan/interledger/testnet -> docker compose -f ./local/docker-compose.yml --env-file ./local/.env.local --env-file ./local/.env "up" "-d" "--build" - -#0 building with "default" instance using docker driver - -#1 [mockgatehub internal] load build definition from Dockerfile -#1 transferring dockerfile: 1.13kB done -#1 DONE 0.0s - -#2 [mockgatehub internal] load metadata for docker.io/library/alpine:latest -#2 DONE 0.0s - -#3 [mockgatehub internal] load metadata for docker.io/library/golang:1.24-alpine -#3 DONE 0.0s - -#4 [mockgatehub internal] load .dockerignore -#4 transferring context: 2B done -#4 DONE 0.0s - -#5 [mockgatehub builder 1/8] FROM docker.io/library/golang:1.24-alpine -#5 DONE 0.0s - -#6 [mockgatehub stage-1 1/6] FROM docker.io/library/alpine:latest -#6 DONE 0.0s - -#7 [mockgatehub internal] load build context -#7 transferring context: 110.91kB 0.0s done -#7 DONE 0.0s - -#8 [mockgatehub stage-1 5/6] COPY --from=builder --chown=mockgatehub:mockgatehub /app/mockgatehub . -#8 CACHED - -#9 [mockgatehub stage-1 3/6] RUN addgroup -g 1000 mockgatehub && adduser -D -u 1000 -G mockgatehub mockgatehub -#9 CACHED - -#10 [mockgatehub builder 2/8] RUN apk add --no-cache git make -#10 CACHED - -#11 [mockgatehub builder 6/8] COPY . . -#11 CACHED - -#12 [mockgatehub builder 4/8] COPY go.mod go.sum ./ -#12 CACHED - -#13 [mockgatehub builder 5/8] RUN go mod download -#13 CACHED - -#14 [mockgatehub builder 8/8] RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags="-X 'main.buildTime=${BUILD_TIME:-unknown}'" -o mockgatehub ./cmd/mockgatehub -#14 CACHED - -#15 [mockgatehub builder 7/8] RUN go clean -cache -#15 CACHED - -#16 [mockgatehub stage-1 4/6] WORKDIR /app -#16 CACHED - -#17 [mockgatehub builder 3/8] WORKDIR /app -#17 CACHED - -#18 [mockgatehub stage-1 2/6] RUN apk --no-cache add ca-certificates curl tzdata -#18 CACHED - -#19 [mockgatehub stage-1 6/6] COPY --from=builder --chown=mockgatehub:mockgatehub /app/web ./web -#19 CACHED - -#20 [mockgatehub] exporting to image -#20 exporting layers done -#20 writing image sha256:14beaff46c182c63ebdf0391e37e93278b21e263b87645d25dd8d70aeb15b779 done -#20 naming to docker.io/library/local-mockgatehub done -#20 DONE 0.0s - -#21 [mockgatehub] resolving provenance for metadata file -#21 DONE 0.0s -[BOUTIQUE-BE] -[BOUTIQUE-BE] > @interledger/testnet@1.0.0 boutique:backend /home/stephan/interledger/testnet -[BOUTIQUE-BE] > pnpm --filter @boutique/backend -- "dev" -[BOUTIQUE-BE] -[BOUTIQUE-FE] -[BOUTIQUE-FE] > @interledger/testnet@1.0.0 boutique:frontend /home/stephan/interledger/testnet -[BOUTIQUE-FE] > pnpm --filter @boutique/frontend -- "dev" -[BOUTIQUE-FE] -[WALLET-BE] -[WALLET-BE] > @interledger/testnet@1.0.0 wallet:backend /home/stephan/interledger/testnet -[WALLET-BE] > pnpm --filter @wallet/backend -- "dev" -[WALLET-BE] -[WALLET-FE] -[WALLET-FE] > @interledger/testnet@1.0.0 wallet:frontend /home/stephan/interledger/testnet -[WALLET-FE] > pnpm --filter @wallet/frontend -- "dev" -[WALLET-FE] -[BOUTIQUE-BE] -[BOUTIQUE-BE] > @boutique/backend@ dev /home/stephan/interledger/testnet/packages/boutique/backend -[BOUTIQUE-BE] > nodemon --watch ./src --watch ../shared/src --ext ts,json --delay 0.5 --exec "sh -c 'set --; [ -f .env.local ] && set -- \$@ --env-file=.env.local; [ -f .env ] && set -- \$@ --env-file=.env; pnpm run build && node \$@ ./dist/index.js'" -[BOUTIQUE-BE] -[WALLET-BE] -[WALLET-BE] > @wallet/backend@ dev /home/stephan/interledger/testnet/packages/wallet/backend -[WALLET-BE] > nodemon --watch ./src --watch ../shared/src --ext ts,json --delay 1 --exec "sh -c 'set --; [ -f .env.local ] && set -- \$@ --env-file=.env.local; [ -f .env ] && set -- \$@ --env-file=.env; pnpm run build && node \$@ ./dist/index.js'" -[WALLET-BE] -[BOUTIQUE-FE] -[BOUTIQUE-FE] > @boutique/frontend@ dev /home/stephan/interledger/testnet/packages/boutique/frontend -[BOUTIQUE-FE] > vite -[BOUTIQUE-FE] -[WALLET-FE] -[WALLET-FE] > @wallet/frontend@ dev /home/stephan/interledger/testnet/packages/wallet/frontend -[WALLET-FE] > next dev -p 4003 -[WALLET-FE] -[BOUTIQUE-BE] [nodemon] 3.1.10 -[BOUTIQUE-BE] [nodemon] to restart at any time, enter `rs` -[BOUTIQUE-BE] [nodemon] watching path(s): src/**/* ../shared/src/**/* -[BOUTIQUE-BE] [nodemon] watching extensions: ts,json -[BOUTIQUE-BE] [nodemon] starting `sh -c 'set --; [ -f .env.local ] && set -- $@ --env-file=.env.local; [ -f .env ] && set -- $@ --env-file=.env; pnpm run build && node $@ ./dist/index.js'` -[WALLET-BE] [nodemon] 3.1.10 -[WALLET-BE] [nodemon] to restart at any time, enter `rs` -[WALLET-BE] [nodemon] watching path(s): src/**/* ../shared/src/**/* -[WALLET-BE] [nodemon] watching extensions: ts,json -[WALLET-BE] [nodemon] starting `sh -c 'set --; [ -f .env.local ] && set -- $@ --env-file=.env.local; [ -f .env ] && set -- $@ --env-file=.env; pnpm run build && node $@ ./dist/index.js'` -[BOUTIQUE-FE] -[BOUTIQUE-FE] VITE v5.4.20 ready in 360 ms -[BOUTIQUE-FE] -[BOUTIQUE-FE] ➜ Local: http://localhost:4004/ -[BOUTIQUE-FE] ➜ Network: http://192.168.0.38:4004/ -[BOUTIQUE-FE] ➜ Network: http://10.5.0.1:4004/ -[BOUTIQUE-BE] -[BOUTIQUE-BE] > @boutique/backend@ build /home/stephan/interledger/testnet/packages/boutique/backend -[BOUTIQUE-BE] > pnpm build:deps && tsc --build tsconfig.build.json && tsc-alias -p tsconfig.build.json -[BOUTIQUE-BE] -[WALLET-BE] -[WALLET-BE] > @wallet/backend@ build /home/stephan/interledger/testnet/packages/wallet/backend -[WALLET-BE] > pnpm build:deps && tsc --build tsconfig.build.json && tsc-alias -p tsconfig.build.json -[WALLET-BE] -[WALLET-FE] ▲ Next.js 14.2.32 -[WALLET-FE] - Local: http://localhost:4003 -[WALLET-FE] - Environments: .env.local -[WALLET-FE] -[WALLET-FE] ✓ Starting... -[BOUTIQUE-BE] -[BOUTIQUE-BE] > @boutique/backend@ build:deps /home/stephan/interledger/testnet/packages/boutique/backend -[BOUTIQUE-BE] > pnpm --filter @shared/backend build && pnpm --filter @boutique/shared build -[BOUTIQUE-BE] -[WALLET-BE] -[WALLET-BE] > @wallet/backend@ build:deps /home/stephan/interledger/testnet/packages/wallet/backend -[WALLET-BE] > pnpm --filter @shared/backend build && pnpm --filter @wallet/shared build -[WALLET-BE] -[BOUTIQUE-BE] -[BOUTIQUE-BE] > @shared/backend@1.0.0 build /home/stephan/interledger/testnet/packages/shared/backend -[BOUTIQUE-BE] > tsc --build tsconfig.build.json && tsc-alias -p tsconfig.build.json -[BOUTIQUE-BE] -[WALLET-BE] -[WALLET-BE] > @shared/backend@1.0.0 build /home/stephan/interledger/testnet/packages/shared/backend -[WALLET-BE] > tsc --build tsconfig.build.json && tsc-alias -p tsconfig.build.json -[WALLET-BE] -[BOUTIQUE-BE] -[BOUTIQUE-BE] > @boutique/shared@1.0.0 build /home/stephan/interledger/testnet/packages/boutique/shared -[BOUTIQUE-BE] > tsc --build tsconfig.build.json -[BOUTIQUE-BE] -[WALLET-BE] -[WALLET-BE] > @wallet/shared@1.0.0 build /home/stephan/interledger/testnet/packages/wallet/shared -[WALLET-BE] > tsc --build tsconfig.build.json -[WALLET-BE] -[WALLET-FE] ✓ Ready in 2.4s -[BOUTIQUE-BE] [2026-04-15 15:47:41] [info] Boutique server started on port 3004 -[WALLET-BE] [2026-04-15 15:47:41] [info] Server started on port 3003 -[WALLET-BE] [2026-04-15 15:47:41] [info] Socket Server is started... -[WALLET-BE] context: {"service":"SocketService"} -[WALLET-FE] ✓ Compiled /src/middleware in 166ms (164 modules) -[WALLET-FE] ○ Compiling / ... -[WALLET-FE] ✓ Compiled / in 932ms (757 modules) -[WALLET-BE] (node:1802943) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification. -[WALLET-BE] (Use `node --trace-warnings ...` to show where the warning was created) -[WALLET-BE] [2026-04-15 15:47:43] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "2811.22", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "2811.22", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "248.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "248.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:47:43] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "2811.22", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "2811.22", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "248.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "248.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:47:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:43Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. -[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) -[WALLET-FE] at div -[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) -[WALLET-FE] at main -[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) -[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) -[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) -[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) -[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) -[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) -[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) -[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) -[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) -[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) -[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) -[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) -[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) -[WALLET-FE] at div -[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) -[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. -[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) -[WALLET-FE] at div -[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) -[WALLET-FE] at main -[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) -[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) -[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) -[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) -[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) -[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) -[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) -[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) -[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) -[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) -[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) -[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) -[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) -[WALLET-FE] at div -[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) -[WALLET-FE] GET / 200 in 1247ms -[WALLET-FE] ⚠ Cross origin request detected from testnet.test to /_next/* resource. In a future major version of Next.js, you will need to explicitly configure "allowedDevOrigins" in next.config to allow this. -[WALLET-FE] Read more: https://nextjs.org/docs/app/api-reference/config/next-config-js/allowedDevOrigins -[WALLET-BE] [2026-04-15 15:47:43] [debug] A socket client 1a9b1834-f050-438c-95ab-3505e90fd08b is connected... -[WALLET-BE] context: {"service":"SocketService"} -[WALLET-BE] [2026-04-15 15:47:48] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "2811.22", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "2811.22", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "248.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "248.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:47:48] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "2811.22", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "2811.22", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "248.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "248.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:47:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:48Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 21ms -[WALLET-FE] ○ Compiling /account/[accountId] ... -[WALLET-FE] ✓ Compiled /account/[accountId] in 532ms (854 modules) -[WALLET-BE] [2026-04-15 15:47:50] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "2811.22", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "2811.22", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "248.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "248.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:47:50Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:50Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/account/4a690a81-38ac-41a8-9f1d-37e813afbe9a.json?accountId=4a690a81-38ac-41a8-9f1d-37e813afbe9a 200 in 627ms -[WALLET-BE] [2026-04-15 15:47:54] [debug] Axios POST request for https://mockgatehub.testnet.test/core/v1/transactions succeeded: -[WALLET-BE] { -[WALLET-BE] "uuid": "2a2bff52-3a3c-4058-a860-068036e3062e", -[WALLET-BE] "user_id": "49003f70-647b-47e8-bc46-07c3929b2901", -[WALLET-BE] "uid": "cb1f7955-4f0c-42c1-aedb-2db21f82a5a5", -[WALLET-BE] "amount": "333333.00", -[WALLET-BE] "total_amount": "333333.00", -[WALLET-BE] "fee": "0.00", -[WALLET-BE] "currency": "EUR", -[WALLET-BE] "vault_uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "sending_address": "", -[WALLET-BE] "receiving_address": "rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea", -[WALLET-BE] "type": 1, -[WALLET-BE] "deposit_type": "external", -[WALLET-BE] "status": 1, -[WALLET-BE] "created_at": "2026-04-15T13:47:54.689423895Z" -[WALLET-BE] } -[WALLET-BE] context: {"amount":333333,"network":8,"uid":"cb1f7955-4f0c-42c1-aedb-2db21f82a5a5","receiving_address":"rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea","vault_uuid":"a09a0a2c-1a3a-44c5-a1b9-603a6eea9341","type":1,"absolute_fee":0} -[WALLET-BE] [2026-04-15 15:47:54] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "2811.22", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "2811.22", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "333581.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "333581.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:47:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:54Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/account/4a690a81-38ac-41a8-9f1d-37e813afbe9a.json?accountId=4a690a81-38ac-41a8-9f1d-37e813afbe9a 200 in 13ms -[WALLET-BE] [2026-04-15 15:47:54] [debug] GateHub webhook event received: {"uuid":"a67c8971-b0f6-4ec7-8140-d4c45f26c10c","timestamp":"1776260874741","event_type":"core.deposit.completed","user_uuid":"49003f70-647b-47e8-bc46-07c3929b2901","environment":"sandbox","data":{"address":"rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea","amount":"333333.00","currency":"EUR","deposit_type":"external","status":"completed","transaction_id":"2a2bff52-3a3c-4058-a860-068036e3062e","tx_uuid":"2a2bff52-3a3c-4058-a860-068036e3062e"}} -[WALLET-BE] [2026-04-15 15:47:57] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "2811.22", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "2811.22", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "333581.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "333581.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:47:57] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "2811.22", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "2811.22", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "333581.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "333581.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:47:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:47:57Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 25ms -[WALLET-BE] [2026-04-15 15:48:02] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "2811.22", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "2811.22", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "333581.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "333581.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:02Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:02Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/account/174556d8-5185-453f-abf1-9021077d051d.json?accountId=174556d8-5185-453f-abf1-9021077d051d 200 in 16ms -[WALLET-BE] [2026-04-15 15:48:03] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "2811.22", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "2811.22", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "333581.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "333581.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:03] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "2811.22", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "2811.22", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "333581.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "333581.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:03Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:03Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 18ms -[WALLET-FE] ○ Compiling /send ... -[WALLET-FE] ✓ Compiled /send in 638ms (1145 modules) -[WALLET-BE] [2026-04-15 15:48:06] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "2811.22", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "2811.22", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "333581.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "333581.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:06] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "2811.22", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "2811.22", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "333581.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "333581.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:06Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:06Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/send.json 200 in 768ms -[WALLET-BE] [2026-04-15 15:48:08] [debug] Axios GET request for https://mockgatehub.testnet.test/rates/v1/rates/current?counter=EUR&amount=1&useAll=true succeeded: -[WALLET-BE] { -[WALLET-BE] "CAD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.6574074074074073, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "EGG": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.9259259259259258, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "EUR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "GBP": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1.1759259259259258, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "MXN": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.054629629629629625, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "PEB": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.9259259259259258, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "PKR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.003333333333333333, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "SGD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.6851851851851851, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "USD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.9259259259259258, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "XRP": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.4629629629629629, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "ZAR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.049999999999999996, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "counter": "EUR" -[WALLET-BE] } -[WALLET-BE] [2026-04-15 15:48:15] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "2811.22", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "2811.22", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "333581.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "333581.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:15Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:15] [debug] Axios GET request for https://mockgatehub.testnet.test/rates/v1/rates/current?counter=USD&amount=1&useAll=true succeeded: -[WALLET-BE] { -[WALLET-BE] "CAD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.71, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "EGG": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "EUR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1.08, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "GBP": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1.27, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "MXN": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.059, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "PEB": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "PKR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.0036, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "SGD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.74, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "USD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "XRP": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.5, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "ZAR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.054, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "counter": "USD" -[WALLET-BE] } -[WALLET-BE] [2026-04-15 15:48:16] [info] received webhook of type : incoming_payment.created for : 1a7304e4-38e6-401a-ad20-e8f90c44b1d3} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:48:17] [info] received webhook of type : outgoing_payment.created for : 9465c3d6-7eb7-4431-b2dd-05ed0b36146d} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:48:17] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "2811.22", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "2811.22", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "333581.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "333581.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:17] [info] Succesfully held 999 in rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea on outgoing_payment.created -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:48:17] [info] received webhook of type : outgoing_payment.completed for : 3e455b0d-52a3-4461-ae4a-94d143131c05} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:48:17] [debug] Axios POST request for https://mockgatehub.testnet.test/core/v1/transactions succeeded: -[WALLET-BE] { -[WALLET-BE] "uuid": "488dc7c8-8504-47ba-ab68-0e587eb710b6", -[WALLET-BE] "user_id": "49003f70-647b-47e8-bc46-07c3929b2901", -[WALLET-BE] "uid": "", -[WALLET-BE] "amount": "999.00", -[WALLET-BE] "total_amount": "999.00", -[WALLET-BE] "fee": "0.00", -[WALLET-BE] "currency": "EUR", -[WALLET-BE] "vault_uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "sending_address": "rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea", -[WALLET-BE] "receiving_address": "$ilp.testnet.test/interledger", -[WALLET-BE] "type": 2, -[WALLET-BE] "deposit_type": "hosted", -[WALLET-BE] "status": 1, -[WALLET-BE] "created_at": "2026-04-15T13:48:17.365343286Z" -[WALLET-BE] } Transfer -[WALLET-BE] context: {"amount":999,"vault_uuid":"a09a0a2c-1a3a-44c5-a1b9-603a6eea9341","sending_address":"rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea","receiving_address":"$ilp.testnet.test/interledger","type":2} -[WALLET-BE] [2026-04-15 15:48:17] [info] Updating transaction with: {"status":"COMPLETED","value":"99900"} -[WALLET-BE] context: {"service":"TransactionService"} -[WALLET-BE] [2026-04-15 15:48:17] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "2811.22", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "2811.22", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:17] [info] Succesfully transfered 999 from rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea to settlement account on outgoing_payment.completed -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:48:17] [info] received webhook of type : incoming_payment.completed for : 56233cb9-9874-4922-84a5-1a6389a371fa} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:48:17] [debug] Axios POST request for https://mockgatehub.testnet.test/core/v1/transactions succeeded: -[WALLET-BE] { -[WALLET-BE] "uuid": "4e1392ea-1330-49db-85ae-c193547bc2e9", -[WALLET-BE] "user_id": "49003f70-647b-47e8-bc46-07c3929b2901", -[WALLET-BE] "uid": "", -[WALLET-BE] "amount": "1078.92", -[WALLET-BE] "total_amount": "1078.92", -[WALLET-BE] "fee": "0.00", -[WALLET-BE] "currency": "USD", -[WALLET-BE] "vault_uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "sending_address": "$ilp.testnet.test/interledger", -[WALLET-BE] "receiving_address": "rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u", -[WALLET-BE] "type": 2, -[WALLET-BE] "deposit_type": "hosted", -[WALLET-BE] "status": 1, -[WALLET-BE] "created_at": "2026-04-15T13:48:17.383365488Z" -[WALLET-BE] } Transfer -[WALLET-BE] context: {"amount":1078.92,"vault_uuid":"450d2156-132a-4d3f-88c5-74822547658d","receiving_address":"rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u","sending_address":"$ilp.testnet.test/interledger","type":2} -[WALLET-BE] [2026-04-15 15:48:17] [info] Updating transaction with: {"status":"COMPLETED","value":"107892","secondParty":"","secondPartyWA":""} -[WALLET-BE] context: {"service":"TransactionService"} -[WALLET-BE] [2026-04-15 15:48:17] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:17Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:17] [info] Succesfully transfered 1078.92 from settlement account $ilp.testnet.test/interledger into rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:48:17] [debug] GateHub webhook event received: {"uuid":"413d67ca-a5d8-45f8-847a-e22bab504da3","timestamp":"1776260897417","event_type":"core.deposit.completed","user_uuid":"49003f70-647b-47e8-bc46-07c3929b2901","environment":"sandbox","data":{"address":"$ilp.testnet.test/interledger","amount":"999.00","currency":"EUR","deposit_type":"hosted","status":"completed","transaction_id":"488dc7c8-8504-47ba-ab68-0e587eb710b6","tx_uuid":"488dc7c8-8504-47ba-ab68-0e587eb710b6"}} -[WALLET-BE] [2026-04-15 15:48:17] [debug] GateHub webhook event received: {"uuid":"cb121729-7829-4412-9b0b-2508b5987dac","timestamp":"1776260897434","event_type":"core.deposit.completed","user_uuid":"49003f70-647b-47e8-bc46-07c3929b2901","environment":"sandbox","data":{"address":"rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u","amount":"1078.92","currency":"USD","deposit_type":"hosted","status":"completed","transaction_id":"4e1392ea-1330-49db-85ae-c193547bc2e9","tx_uuid":"4e1392ea-1330-49db-85ae-c193547bc2e9"}} -[WALLET-BE] [2026-04-15 15:48:18] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:18] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:18Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:18Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 22ms -[WALLET-BE] [2026-04-15 15:48:21] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:21] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:21Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:21Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 12ms -[WALLET-BE] [2026-04-15 15:48:22] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:22] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:22Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:22Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 20ms -[WALLET-BE] [2026-04-15 15:48:23] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:23] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:23Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:23Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/send.json 200 in 13ms -[WALLET-BE] [2026-04-15 15:48:24] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:24] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:24Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:24Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 12ms -[WALLET-BE] [2026-04-15 15:48:28] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:28] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:28Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:28Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/send.json 200 in 16ms -[WALLET-BE] [2026-04-15 15:48:37] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:37Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:37Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:37] [info] received webhook of type : incoming_payment.created for : 192e369d-f8fa-4403-9ce9-45988f63e790} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:48:38] [info] received webhook of type : outgoing_payment.created for : fd66ea95-febe-4dce-888f-9e0301ec4af1} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:48:38] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:38Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:38Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:38] [info] Succesfully held 300000 in rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea on outgoing_payment.created -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:48:38] [info] received webhook of type : outgoing_payment.failed for : d6fa655b-9a62-4995-8cd5-364981fd44fe} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:48:38] [info] Updating transaction with: {"status":"FAILED","value":"0"} -[WALLET-BE] context: {"service":"TransactionService"} -[WALLET-BE] [2026-04-15 15:48:42] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:42Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:42] [info] received webhook of type : incoming_payment.created for : 053f9caa-db1b-49cf-9314-09ea45ff9eb6} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:48:44] [info] received webhook of type : outgoing_payment.created for : ed6b60aa-511a-410c-a6c3-140dd0f66dc0} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:48:44] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:44Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:44] [info] Succesfully held 300000 in rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea on outgoing_payment.created -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:48:44] [info] received webhook of type : outgoing_payment.failed for : a3afdd84-d8c5-482b-93e1-69fff259f5f0} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:48:44] [info] Updating transaction with: {"status":"FAILED","value":"0"} -[WALLET-BE] context: {"service":"TransactionService"} -[WALLET-BE] [2026-04-15 15:48:45] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:45] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:45Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 17ms -[WALLET-BE] [2026-04-15 15:48:47] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:47] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:47Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:47Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 16ms -[WALLET-BE] [2026-04-15 15:48:48] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:48] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:48Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:48Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 15ms -[WALLET-BE] [2026-04-15 15:48:49] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:49] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/send.json 200 in 12ms -[WALLET-BE] [2026-04-15 15:48:49] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:49] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:49Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:49Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 16ms -[WALLET-BE] [2026-04-15 15:48:52] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:52] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:52Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:52Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 17ms -[WALLET-BE] [2026-04-15 15:48:54] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:54] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:54Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/send.json 200 in 13ms -[WALLET-BE] [2026-04-15 15:48:56] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:48:56] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:48:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:48:56Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 11ms -[WALLET-BE] [2026-04-15 15:49:14] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:49:14] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:14Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:14Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. -[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) -[WALLET-FE] at div -[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) -[WALLET-FE] at main -[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) -[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) -[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) -[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) -[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) -[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) -[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) -[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) -[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) -[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) -[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) -[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) -[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) -[WALLET-FE] at div -[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) -[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. -[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) -[WALLET-FE] at div -[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) -[WALLET-FE] at main -[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) -[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) -[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) -[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) -[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) -[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) -[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) -[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) -[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) -[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) -[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) -[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) -[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) -[WALLET-FE] at div -[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) -[WALLET-FE] GET / 200 in 44ms -[WALLET-BE] [2026-04-15 15:49:14] [debug] A socket client 1a9b1834-f050-438c-95ab-3505e90fd08b disconnected... -[WALLET-BE] context: {"service":"SocketService"} -[WALLET-BE] [2026-04-15 15:49:14] [debug] A socket client 1a9b1834-f050-438c-95ab-3505e90fd08b is connected... -[WALLET-BE] context: {"service":"SocketService"} -[WALLET-BE] [2026-04-15 15:49:15] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:49:15] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. -[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) -[WALLET-FE] at div -[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) -[WALLET-FE] at main -[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) -[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) -[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) -[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) -[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) -[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) -[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) -[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) -[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) -[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) -[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) -[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) -[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) -[WALLET-FE] at div -[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) -[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. -[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) -[WALLET-FE] at div -[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) -[WALLET-FE] at main -[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) -[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) -[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) -[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) -[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) -[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) -[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) -[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) -[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) -[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) -[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) -[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) -[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) -[WALLET-FE] at div -[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) -[WALLET-FE] GET / 200 in 27ms -[WALLET-BE] [2026-04-15 15:49:15] [debug] A socket client 1a9b1834-f050-438c-95ab-3505e90fd08b disconnected... -[WALLET-BE] context: {"service":"SocketService"} -[WALLET-BE] [2026-04-15 15:49:15] [debug] A socket client 1a9b1834-f050-438c-95ab-3505e90fd08b is connected... -[WALLET-BE] context: {"service":"SocketService"} -[WALLET-BE] [2026-04-15 15:49:15] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:49:15] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:15Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:15Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. -[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) -[WALLET-FE] at div -[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) -[WALLET-FE] at main -[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) -[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) -[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) -[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) -[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) -[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) -[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) -[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) -[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) -[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) -[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) -[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) -[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) -[WALLET-FE] at div -[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) -[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. -[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) -[WALLET-FE] at div -[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) -[WALLET-FE] at main -[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) -[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) -[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) -[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) -[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) -[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) -[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) -[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) -[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) -[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) -[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) -[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) -[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) -[WALLET-FE] at div -[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) -[WALLET-FE] GET / 200 in 51ms -[WALLET-BE] [2026-04-15 15:49:15] [debug] A socket client 1a9b1834-f050-438c-95ab-3505e90fd08b disconnected... -[WALLET-BE] context: {"service":"SocketService"} -[WALLET-BE] [2026-04-15 15:49:16] [debug] A socket client 1a9b1834-f050-438c-95ab-3505e90fd08b is connected... -[WALLET-BE] context: {"service":"SocketService"} -[WALLET-BE] [2026-04-15 15:49:16] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:49:16] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:16Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:16Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. -[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) -[WALLET-FE] at div -[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) -[WALLET-FE] at main -[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) -[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) -[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) -[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) -[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) -[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) -[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) -[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) -[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) -[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) -[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) -[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) -[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) -[WALLET-FE] at div -[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) -[WALLET-FE] Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes. -[WALLET-FE] at AccountCard (webpack-internal:///./src/components/cards/AccountCard.tsx:24:24) -[WALLET-FE] at div -[WALLET-FE] at HomePage (webpack-internal:///./src/pages/index.tsx:31:21) -[WALLET-FE] at main -[WALLET-FE] at AppLayout (webpack-internal:///./src/components/layouts/AppLayout.tsx:35:22) -[WALLET-FE] at DialogProvider (webpack-internal:///./src/components/providers/DialogProvider.tsx:32:27) -[WALLET-FE] at DeveloperKeysProvider (webpack-internal:///./src/components/providers/DeveloperKeysProvider.tsx:13:34) -[WALLET-FE] at PasswordProvider (webpack-internal:///./src/components/providers/PasswordProvider.tsx:13:29) -[WALLET-FE] at RefundProvider (webpack-internal:///./src/components/providers/RefundProvider.tsx:13:27) -[WALLET-FE] at OnboardingProvider (webpack-internal:///./src/components/providers/OnboardingProvider.tsx:13:31) -[WALLET-FE] at MenuProvider (webpack-internal:///./src/components/providers/MenuProvider.tsx:13:25) -[WALLET-FE] at AppProvider (webpack-internal:///./src/components/providers/index.tsx:20:24) -[WALLET-FE] at App (webpack-internal:///./src/pages/_app.tsx:42:16) -[WALLET-FE] at StyleRegistry (/home/stephan/interledger/testnet/node_modules/.pnpm/styled-jsx@5.1.1_react@18.3.1/node_modules/styled-jsx/dist/index/index.js:449:36) -[WALLET-FE] at eU (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:8:20506) -[WALLET-FE] at eH (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:1788) -[WALLET-FE] at eJ (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:17:3091) -[WALLET-FE] at div -[WALLET-FE] at e9 (/home/stephan/interledger/testnet/node_modules/.pnpm/next@14.2.32_@opentelemetry+api@1.9.0_@playwright+test@1.58.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages.runtime.dev.js:26:761) -[WALLET-FE] GET / 200 in 28ms -[WALLET-BE] [2026-04-15 15:49:16] [debug] A socket client 1a9b1834-f050-438c-95ab-3505e90fd08b disconnected... -[WALLET-BE] context: {"service":"SocketService"} -[WALLET-BE] [2026-04-15 15:49:16] [debug] A socket client 1a9b1834-f050-438c-95ab-3505e90fd08b is connected... -[WALLET-BE] context: {"service":"SocketService"} -[WALLET-FE] ✓ Compiled /transactions in 452ms (1127 modules) -[WALLET-BE] [2026-04-15 15:49:17] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:49:17] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:17Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/transactions.json 200 in 534ms -[WALLET-BE] [2026-04-15 15:49:27] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:49:27] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:27Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:27Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 21ms -[WALLET-FE] ✓ Compiled /account/[accountId] in 136ms (1167 modules) -[WALLET-BE] [2026-04-15 15:49:40] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:40Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:40Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/account/4a690a81-38ac-41a8-9f1d-37e813afbe9a.json?accountId=4a690a81-38ac-41a8-9f1d-37e813afbe9a 200 in 205ms -[WALLET-BE] [2026-04-15 15:49:42] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:49:42] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:42Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 18ms -[WALLET-BE] [2026-04-15 15:49:43] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:43Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:43Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/account/174556d8-5185-453f-abf1-9021077d051d.json?accountId=174556d8-5185-453f-abf1-9021077d051d 200 in 19ms -[WALLET-BE] [2026-04-15 15:49:45] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:49:45] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:45Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:45Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/send.json 200 in 42ms -[WALLET-BE] [2026-04-15 15:49:47] [debug] Axios GET request for https://mockgatehub.testnet.test/rates/v1/rates/current?counter=EUR&amount=1&useAll=true succeeded: -[WALLET-BE] { -[WALLET-BE] "CAD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.6574074074074073, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "EGG": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.9259259259259258, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "EUR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "GBP": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1.1759259259259258, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "MXN": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.054629629629629625, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "PEB": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.9259259259259258, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "PKR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.003333333333333333, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "SGD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.6851851851851851, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "USD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.9259259259259258, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "XRP": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.4629629629629629, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "ZAR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.049999999999999996, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "counter": "EUR" -[WALLET-BE] } -[WALLET-BE] [2026-04-15 15:49:54] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:54Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:54Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:49:54] [debug] Axios GET request for https://mockgatehub.testnet.test/rates/v1/rates/current?counter=USD&amount=1&useAll=true succeeded: -[WALLET-BE] { -[WALLET-BE] "CAD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.71, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "EGG": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "EUR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1.08, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "GBP": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1.27, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "MXN": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.059, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "PEB": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "PKR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.0036, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "SGD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.74, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "USD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "XRP": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.5, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "ZAR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.054, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "counter": "USD" -[WALLET-BE] } -[WALLET-BE] [2026-04-15 15:49:54] [info] received webhook of type : incoming_payment.created for : 2e190ea7-f8b1-4437-8d6f-36a8367be2cd} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:49:55] [info] received webhook of type : outgoing_payment.created for : da41f8b9-cf54-4587-b728-e09c347e201a} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:49:55] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:55Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:49:55] [info] Succesfully held 100000 in rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea on outgoing_payment.created -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:49:55] [info] received webhook of type : outgoing_payment.failed for : 42ba015f-2a0c-4dda-a053-e35444e24708} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:49:55] [info] Updating transaction with: {"status":"FAILED","value":"0"} -[WALLET-BE] context: {"service":"TransactionService"} -[WALLET-BE] [2026-04-15 15:49:56] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:49:56] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:56Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:56Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 15ms -[WALLET-BE] [2026-04-15 15:49:58] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:49:58] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:58Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:58Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 22ms -[WALLET-BE] [2026-04-15 15:49:59] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:49:59] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:49:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:49:59Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 17ms -[WALLET-BE] [2026-04-15 15:50:01] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:50:01] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:50:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:01Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/transactions.json 200 in 28ms -[WALLET-BE] [2026-04-15 15:50:44] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:50:44] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:50:44Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:44Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/send.json 200 in 30ms -[WALLET-BE] [2026-04-15 15:50:55] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:50:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:50:55Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:50:55] [debug] Axios GET request for https://mockgatehub.testnet.test/rates/v1/rates/current?counter=EUR&amount=1&useAll=true succeeded: -[WALLET-BE] { -[WALLET-BE] "CAD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.6574074074074073, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "EGG": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.9259259259259258, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "EUR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "GBP": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1.1759259259259258, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "MXN": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.054629629629629625, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "PEB": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.9259259259259258, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "PKR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.003333333333333333, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "SGD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.6851851851851851, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "USD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.9259259259259258, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "XRP": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.4629629629629629, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "ZAR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.049999999999999996, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "counter": "EUR" -[WALLET-BE] } -[WALLET-BE] [2026-04-15 15:50:55] [debug] Axios GET request for https://mockgatehub.testnet.test/rates/v1/rates/current?counter=USD&amount=1&useAll=true succeeded: -[WALLET-BE] { -[WALLET-BE] "CAD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.71, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "EGG": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "EUR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1.08, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "GBP": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1.27, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "MXN": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.059, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "PEB": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "PKR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.0036, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "SGD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.74, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "USD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "XRP": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.5, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "ZAR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.054, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "counter": "USD" -[WALLET-BE] } -[WALLET-BE] [2026-04-15 15:50:55] [info] received webhook of type : incoming_payment.created for : c2c0d14d-65a5-4601-affe-2df3aba29c7a} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:51:01] [info] received webhook of type : outgoing_payment.created for : d60ff506-c41e-4e04-8802-54b29a63175a} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:51:01] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:51:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:01Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:51:01] [info] Succesfully held 123000 in rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea on outgoing_payment.created -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:51:01] [info] received webhook of type : outgoing_payment.failed for : db361b0d-e437-4bbc-b072-a75a6a5d54b5} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:51:01] [info] Updating transaction with: {"status":"FAILED","value":"0"} -[WALLET-BE] context: {"service":"TransactionService"} -[WALLET-BE] [2026-04-15 15:51:17] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:51:17] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:51:17Z", -[WALLET-BE] "updated_at": "2026-04-15T13:51:17Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 16ms -[WALLET-BE] [2026-04-15 15:53:42] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:53:42] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:53:42Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:42Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/send.json 200 in 19ms -[WALLET-BE] [2026-04-15 15:53:43] [debug] Axios GET request for https://mockgatehub.testnet.test/rates/v1/rates/current?counter=EUR&amount=1&useAll=true succeeded: -[WALLET-BE] { -[WALLET-BE] "CAD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.6574074074074073, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "EGG": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.9259259259259258, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "EUR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "GBP": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1.1759259259259258, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "MXN": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.054629629629629625, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "PEB": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.9259259259259258, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "PKR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.003333333333333333, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "SGD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.6851851851851851, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "USD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.9259259259259258, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "XRP": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.4629629629629629, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "ZAR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.049999999999999996, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "counter": "EUR" -[WALLET-BE] } -[WALLET-BE] [2026-04-15 15:53:55] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:53:55Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:55Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:53:55] [debug] Axios GET request for https://mockgatehub.testnet.test/rates/v1/rates/current?counter=USD&amount=1&useAll=true succeeded: -[WALLET-BE] { -[WALLET-BE] "CAD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.71, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "EGG": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "EUR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1.08, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "GBP": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1.27, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "MXN": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.059, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "PEB": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "PKR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.0036, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "SGD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.74, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "USD": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 1, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "XRP": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.5, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "ZAR": { -[WALLET-BE] "amount": "1", -[WALLET-BE] "change": "0", -[WALLET-BE] "rate": 0.054, -[WALLET-BE] "type": "ExchangeRate" -[WALLET-BE] }, -[WALLET-BE] "counter": "USD" -[WALLET-BE] } -[WALLET-BE] [2026-04-15 15:53:55] [info] received webhook of type : incoming_payment.created for : 8e2d3fa2-22a6-4c40-9901-d3cf246f6293} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:53:57] [info] received webhook of type : outgoing_payment.created for : b5d70781-bde2-413a-8ca4-ca6de0745063} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:53:57] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "332582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "332582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:53:57] [info] Succesfully held 50000 in rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea on outgoing_payment.created -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:53:57] [info] received webhook of type : outgoing_payment.completed for : c8ee03c5-19f0-4c02-bb59-37a6fc920f07} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:53:57] [debug] Axios POST request for https://mockgatehub.testnet.test/core/v1/transactions succeeded: -[WALLET-BE] { -[WALLET-BE] "uuid": "59e44708-66b4-4456-803a-10eebaa3254c", -[WALLET-BE] "user_id": "49003f70-647b-47e8-bc46-07c3929b2901", -[WALLET-BE] "uid": "", -[WALLET-BE] "amount": "50000.00", -[WALLET-BE] "total_amount": "50000.00", -[WALLET-BE] "fee": "0.00", -[WALLET-BE] "currency": "EUR", -[WALLET-BE] "vault_uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "sending_address": "rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea", -[WALLET-BE] "receiving_address": "$ilp.testnet.test/interledger", -[WALLET-BE] "type": 2, -[WALLET-BE] "deposit_type": "hosted", -[WALLET-BE] "status": 1, -[WALLET-BE] "created_at": "2026-04-15T13:53:57.336923173Z" -[WALLET-BE] } Transfer -[WALLET-BE] context: {"amount":50000,"vault_uuid":"a09a0a2c-1a3a-44c5-a1b9-603a6eea9341","sending_address":"rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea","receiving_address":"$ilp.testnet.test/interledger","type":2} -[WALLET-BE] [2026-04-15 15:53:57] [info] Updating transaction with: {"status":"COMPLETED","value":"5000000"} -[WALLET-BE] context: {"service":"TransactionService"} -[WALLET-BE] [2026-04-15 15:53:57] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "3890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "3890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "282582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "282582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:53:57] [info] Succesfully transfered 50000 from rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea to settlement account on outgoing_payment.completed -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:53:57] [info] received webhook of type : incoming_payment.completed for : f2574b27-572f-4fbd-b7df-059cae07d536} -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:53:57] [debug] Axios POST request for https://mockgatehub.testnet.test/core/v1/transactions succeeded: -[WALLET-BE] { -[WALLET-BE] "uuid": "07a88bd8-6e2d-4504-9b8b-f2875c37bbad", -[WALLET-BE] "user_id": "49003f70-647b-47e8-bc46-07c3929b2901", -[WALLET-BE] "uid": "", -[WALLET-BE] "amount": "54000.00", -[WALLET-BE] "total_amount": "54000.00", -[WALLET-BE] "fee": "0.00", -[WALLET-BE] "currency": "USD", -[WALLET-BE] "vault_uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "sending_address": "$ilp.testnet.test/interledger", -[WALLET-BE] "receiving_address": "rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u", -[WALLET-BE] "type": 2, -[WALLET-BE] "deposit_type": "hosted", -[WALLET-BE] "status": 1, -[WALLET-BE] "created_at": "2026-04-15T13:53:57.361087733Z" -[WALLET-BE] } Transfer -[WALLET-BE] context: {"amount":54000,"vault_uuid":"450d2156-132a-4d3f-88c5-74822547658d","receiving_address":"rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u","sending_address":"$ilp.testnet.test/interledger","type":2} -[WALLET-BE] [2026-04-15 15:53:57] [info] Updating transaction with: {"status":"COMPLETED","value":"5400000","secondParty":"","secondPartyWA":""} -[WALLET-BE] context: {"service":"TransactionService"} -[WALLET-BE] [2026-04-15 15:53:57] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "57890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "57890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "282582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "282582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:53:57Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:57Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:53:57] [info] Succesfully transfered 54000 from settlement account $ilp.testnet.test/interledger into rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u -[WALLET-BE] context: {"service":"RafikiService"} -[WALLET-BE] [2026-04-15 15:53:57] [debug] GateHub webhook event received: {"uuid":"23e1cf5a-ade2-4662-8739-3a7a84ef6561","timestamp":"1776261237388","event_type":"core.deposit.completed","user_uuid":"49003f70-647b-47e8-bc46-07c3929b2901","environment":"sandbox","data":{"address":"$ilp.testnet.test/interledger","amount":"50000.00","currency":"EUR","deposit_type":"hosted","status":"completed","transaction_id":"59e44708-66b4-4456-803a-10eebaa3254c","tx_uuid":"59e44708-66b4-4456-803a-10eebaa3254c"}} -[WALLET-BE] [2026-04-15 15:53:57] [debug] GateHub webhook event received: {"uuid":"012c71a7-0bdf-4798-92c7-263c66a0cf18","timestamp":"1776261237412","event_type":"core.deposit.completed","user_uuid":"49003f70-647b-47e8-bc46-07c3929b2901","environment":"sandbox","data":{"address":"rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u","amount":"54000.00","currency":"USD","deposit_type":"hosted","status":"completed","transaction_id":"07a88bd8-6e2d-4504-9b8b-f2875c37bbad","tx_uuid":"07a88bd8-6e2d-4504-9b8b-f2875c37bbad"}} -[WALLET-BE] [2026-04-15 15:53:59] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "57890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "57890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "282582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "282582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:53:59] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "57890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "57890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "282582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "282582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:53:59Z", -[WALLET-BE] "updated_at": "2026-04-15T13:53:59Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 15ms -[WALLET-BE] [2026-04-15 15:54:01] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rMYQXGMuzXxU7QFu8mBkSY7Pod8KSuDYea/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "57890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "57890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "282582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "282582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-BE] [2026-04-15 15:54:01] [debug] Axios GET request for https://mockgatehub.testnet.test/core/v1/wallets/rcuJRqfr3w74gkFGRrS3XWKSA1uKZQC96u/balances succeeded: -[WALLET-BE] [ -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "6e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", -[WALLET-BE] "name": "Sandbox Vault XRP", -[WALLET-BE] "asset_code": "XRP", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "57890.14", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "57890.14", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "450d2156-132a-4d3f-88c5-74822547658d", -[WALLET-BE] "name": "Sandbox Vault USD", -[WALLET-BE] "asset_code": "USD", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "282582.86", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "282582.86", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "a09a0a2c-1a3a-44c5-a1b9-603a6eea9341", -[WALLET-BE] "name": "Sandbox Vault EUR", -[WALLET-BE] "asset_code": "EUR", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "992b932d-7e9e-44b0-90ea-b82a530b6784", -[WALLET-BE] "name": "Sandbox Vault GBP", -[WALLET-BE] "asset_code": "GBP", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "f1c412ce-5e2b-4737-9121-b7c11d6c3f93", -[WALLET-BE] "name": "Sandbox Vault ZAR", -[WALLET-BE] "asset_code": "ZAR", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "426c2e30-111e-4273-92b3-508445a6bb58", -[WALLET-BE] "name": "Sandbox Vault MXN", -[WALLET-BE] "asset_code": "MXN", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "e2914c33-2e57-49a5-ac06-25c006497b3d", -[WALLET-BE] "name": "Sandbox Vault SGD", -[WALLET-BE] "asset_code": "SGD", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "bd5af6fe-5d92-4b20-9bd4-1baa52b7a02e", -[WALLET-BE] "name": "Sandbox Vault CAD", -[WALLET-BE] "asset_code": "CAD", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "9a550347-799e-4c10-9142-f1a2e1c084e7", -[WALLET-BE] "name": "Sandbox Vault EGG", -[WALLET-BE] "asset_code": "EGG", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "0ba2b0d1-b7a2-416c-a4ac-1cb3e5281300", -[WALLET-BE] "name": "Sandbox Vault PEB", -[WALLET-BE] "asset_code": "PEB", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] }, -[WALLET-BE] { -[WALLET-BE] "available": "0.00", -[WALLET-BE] "pending": "0.00", -[WALLET-BE] "total": "0.00", -[WALLET-BE] "vault": { -[WALLET-BE] "uuid": "2868b4e5-7178-4945-8ec5-8208fac2a22d", -[WALLET-BE] "name": "Sandbox Vault PKR", -[WALLET-BE] "asset_code": "PKR", -[WALLET-BE] "created_at": "2026-04-15T13:54:01Z", -[WALLET-BE] "updated_at": "2026-04-15T13:54:01Z" -[WALLET-BE] } -[WALLET-BE] } -[WALLET-BE] ] -[WALLET-FE] GET /_next/data/development/index.json 200 in 18ms -[WALLET-FE] ✓ Compiled /auth in 385ms (1115 modules) -[WALLET-FE] GET /_next/data/development/auth.json 200 in 431ms From 07362c89f2ad2f681e8ec2b006272738df42ac3d Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Wed, 15 Apr 2026 16:04:31 +0200 Subject: [PATCH 38/51] fix: we will not ask for sudo if we don't need it anymore --- local/scripts/local-tools.sh | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/local/scripts/local-tools.sh b/local/scripts/local-tools.sh index 5cb2782e4..d2b636ad5 100644 --- a/local/scripts/local-tools.sh +++ b/local/scripts/local-tools.sh @@ -113,7 +113,31 @@ run_all() { } run_hosts() { - echo "Updating /etc/hosts entries for testnet domains..." + echo "Checking /etc/hosts entries for testnet domains..." + + local needs_update=false + + # Check for stale entries from old tag format + if grep -q '# generated by make hosts' /etc/hosts 2>/dev/null; then + needs_update=true + fi + + # Check that every expected entry exists + if [[ "$needs_update" == false ]]; then + for host in "${HOSTS[@]}"; do + if ! grep -qF "127.0.0.1 $host $HOST_TAG" /etc/hosts 2>/dev/null; then + needs_update=true + break + fi + done + fi + + if [[ "$needs_update" == false ]]; then + echo "All /etc/hosts entries are already correct. Nothing to do." + return + fi + + echo "Updating /etc/hosts entries for testnet domains (requires sudo)..." echo "Removing previously managed entries..." sudo sed -i.bak '/# generated by make hosts/d' /etc/hosts sudo sed -i.bak '/# generated by pnpm local:hosts/d' /etc/hosts From 5360566cf11782a673cc286fff4b9b1ef84d7343 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Wed, 15 Apr 2026 16:27:04 +0200 Subject: [PATCH 39/51] style: prettier lint fix --- packages/wallet/frontend/next.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/wallet/frontend/next.config.js b/packages/wallet/frontend/next.config.js index 34f799ed1..571ff3f81 100644 --- a/packages/wallet/frontend/next.config.js +++ b/packages/wallet/frontend/next.config.js @@ -11,8 +11,8 @@ if (!process.env.NEXT_PUBLIC_BACKEND_URL) { // Default to env override; fall back to previous production/sandbox rule, then to 'true' let NEXT_PUBLIC_FEATURES_ENABLED = process.env.NEXT_PUBLIC_FEATURES_ENABLED -// This is a gaurdrail to prevent accidentally enabling features in production when the -// env variable is not set. +// This is a gaurdrail to prevent accidentally enabling features in production when the +// env variable is not set. if (!NEXT_PUBLIC_FEATURES_ENABLED) { if ( process.env.NODE_ENV === 'production' && From 542701d7b38bdec6bea906d47cd06d2d5c820fa3 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Wed, 15 Apr 2026 16:28:21 +0200 Subject: [PATCH 40/51] test: resolved test issue where faker was creating short strings --- .../backend/tests/walletAddressKeys/controller.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/wallet/backend/tests/walletAddressKeys/controller.test.ts b/packages/wallet/backend/tests/walletAddressKeys/controller.test.ts index 01a9950fd..863100168 100644 --- a/packages/wallet/backend/tests/walletAddressKeys/controller.test.ts +++ b/packages/wallet/backend/tests/walletAddressKeys/controller.test.ts @@ -132,7 +132,7 @@ describe('Wallet Address Keys Controller', () => { } req.body = { - nickname: faker.lorem.word() + nickname: faker.lorem.word({ length: { min: 3, max: 10 } }) } await walletAddressKeyController.patchKey(req, res, next) @@ -168,7 +168,7 @@ describe('Wallet Address Keys Controller', () => { } req.body = { - nickname: faker.lorem.word() + nickname: faker.lorem.word({ length: { min: 3, max: 10 } }) } await walletAddressKeyController.registerKey(req, res, next) @@ -205,7 +205,7 @@ describe('Wallet Address Keys Controller', () => { } req.body = { - nickname: faker.lorem.word(), + nickname: faker.lorem.word({ length: { min: 3, max: 10 } }), base64Key: faker.lorem.word() } From 68f9f774d1017832861e998ddd55a41362e36ce2 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Wed, 15 Apr 2026 16:29:34 +0200 Subject: [PATCH 41/51] docs: github copilot instructions update --- .github/copilot-instructions.md | 291 +++++++++++++++++++++----------- 1 file changed, 189 insertions(+), 102 deletions(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index f00b42702..ecff000d6 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -1,167 +1,254 @@ -# GitHub Copilot Instructions for Interledger Test Network +# GitHub Copilot Instructions — Interledger TestNet -## Purpose And Scope +## Project Summary -Test Network is a full-stack pnpm workspace monorepo for Interledger sandbox integrations. It contains two apps: +**Interledger TestNet** is an open-source, full-stack Node.js/TypeScript monorepo demonstrating Interledger Protocol integration. It consists of: +- **Wallet Backend** (NestJS) — Account management, KYC, payment rails +- **Wallet Frontend** (Next.js) — User-facing web UI for accounts and transactions +- **Boutique Backend** (Express) — E-commerce demo server +- **Boutique Frontend** (Vite) — E-commerce storefront +- **Shared Packages** — Common backend & frontend utilities -- Wallet (`packages/wallet/*`): Next.js frontend + Node/Express backend. -- Boutique (`packages/boutique/*`): Vite/React frontend + Node/Express backend. +**Size**: ~100K lines of TypeScript + Node.js; ~80 test files; ~10 npm packages +**Purpose**: Reference implementation for Account Servicing Entities integrating with Interledger Protocol and Rafiki +**Key Integrations**: Rafiki (ILP), MockGatehub (sandbox KYC/fiat), Stripe, GateHub, Kratos (identity) -Shared packages are in `packages/shared/backend`, `packages/wallet/shared`, and `packages/boutique/shared`. +--- -Use this file as the default source of truth. Trust these instructions and only search the repo when this file is incomplete or proven wrong. +## Prerequisites -## Runtime And Tooling (Strict) +### Required Environment -- Node: `^20.12.1` required by `package.json` engines. -- Package manager: `pnpm@9.1.4` (`packageManager` field). -- Never use `npm install` or `yarn` in this repo. +- **Node.js 20 LTS** (`lts/iron`, enforced by `package.json` engines field) +- **pnpm 9.x** (managed via Corepack; CI uses `pnpm/action-setup@v2`) +- **Docker** and **Docker Compose** (for local services: Postgres, Redis, Traefik, Kratos, Rafiki, MockGatehub) +- **Git** -Local shell note validated on this machine: default `node` was `v18.19.1`, which causes engine failures even if `pnpm` exists. Ensure Node 20 is first on `PATH` before running scripts. - -Example reliable setup: +### Setup Steps (First Time Only) ```bash -PATH=/home/$USER/.nvm/versions/node/v20.20.0/bin:$PATH -corepack pnpm -v -node -v -``` +# 1. Switch to Node 20 (assumes nvm installed) +nvm install lts/iron +nvm use lts/iron -## Bootstrap, Build, Test, Lint (Validated) +# 2. Enable Corepack (pnpm package manager) +corepack enable -Run from repo root `testnet/`. +# 3. Clone and navigate +cd /path/to/testnet -1. Bootstrap (always first): +# 4. Install all dependencies +pnpm install --frozen-lockfile -```bash -PATH=/home/$USER/.nvm/versions/node/v20.20.0/bin:$PATH corepack pnpm install --frozen-lockfile +# 5. (Optional) Local development setup (interactive, requires Docker, sudo) +pnpm local:setup ``` -Validated: passes in ~1.5s when lockfile is up to date. +**Critical**: Always run `pnpm install --frozen-lockfile` after pulling; never use `npm install` or `yarn install`. -2. Quality checks: +--- -```bash -PATH=/home/$USER/.nvm/versions/node/v20.20.0/bin:$PATH corepack pnpm checks -``` +## Build & Validation Commands -Validated behavior: may fail on existing repo formatting drift (Prettier). In this workspace it failed on: +### Core Commands (Work Immediately After Setup) -- `local/docker-compose.yml` -- `local/scripts/rafiki-setup.js` -- `packages/wallet/frontend/next.config.js` -- `packages/wallet/frontend/src/middleware.ts` +| Command | Purpose | Time | Notes | +|---------|---------|------|-------| +| `pnpm checks` | ESLint (--max-warnings=0) + Prettier check | ~3s | **Always run before PR** — catches formatting and linting issues | +| `pnpm test` | Jest unit tests (wallet + boutique backends) | ~80s | Runs `jest --passWithNoTests --maxWorkers` per package; uses experimental VM modules | +| `pnpm format` | Auto-fix ESLint + Prettier | ~5s | Mutates files in place; safe to run | +| `pnpm build` | Compile all packages to `dist/` and `.next/` | ~30s | Requires correct Node version; builds dependencies first | -3. Lint only (for signal isolation): +### Per-Package Commands ```bash -PATH=/home/$USER/.nvm/versions/node/v20.20.0/bin:$PATH corepack pnpm lint:check +# Wallet backend +pnpm wallet:backend build # Compile wallet backend (NestJS) +pnpm wallet:backend test # Unit tests (Jest) +pnpm wallet:backend dev # Watch mode (Requires local services up) + +# Wallet frontend +pnpm wallet:frontend build # Next.js production build +pnpm wallet:frontend dev # Dev server (Requires backend services) + +# Boutique backend +pnpm boutique:backend build # Express app builds via TypeScript +pnpm boutique:backend test # Jest unit tests +pnpm boutique:backend dev # Watch mode + +# Boutique frontend +pnpm boutique:frontend build # Vite production build +pnpm boutique:frontend dev # Dev server ``` -Validated behavior: currently fails on `packages/wallet/frontend/src/middleware.ts` (`@typescript-eslint/no-explicit-any`). - -4. Build all: +### Repository Maintenance ```bash -PATH=/home/$USER/.nvm/versions/node/v20.20.0/bin:$PATH corepack pnpm build +pnpm clean # Remove all node_modules/ and dist/.next/ +pnpm clean:builds # Remove dist/.next/ only +pnpm prettier:write # Auto-format all files +pnpm lint:fix # Auto-fix eslint issues ``` -Validated behavior: currently fails quickly if Docker-created artifacts are root-owned (TS5033 / EACCES in `packages/wallet/shared/dist`). +--- -5. Package-scoped backend verification: +## CI/CD Validation Pipeline -```bash -PATH=/home/$USER/.nvm/versions/node/v20.20.0/bin:$PATH corepack pnpm boutique:backend build -PATH=/home/$USER/.nvm/versions/node/v20.20.0/bin:$PATH corepack pnpm boutique:backend test -``` +Every PR automatically runs: -Validated: passes (`5` suites, `29` tests) in ~17s for tests. +1. **Checks** (runs on all PRs) + ```bash + pnpm checks # ESLint --max-warnings=0 + prettier --check + ``` -Wallet backend flow currently blocked by the same `wallet/shared/dist` permission issue: +2. **Conditional Builds** (based on PR labels: `package: wallet/frontend`, `package: wallet/backend`, etc.) + ```bash + pnpm wallet:frontend build + pnpm wallet:backend build + pnpm boutique:frontend build + pnpm boutique:backend build + ``` +3. **Conditional Tests** (after builds pass) + ```bash + pnpm wallet:backend test --detectOpenHandles --forceExit + pnpm boutique:backend test --detectOpenHandles --forceExit + ``` + +**To replicate locally** (before pushing): ```bash -PATH=/home/$USER/.nvm/versions/node/v20.20.0/bin:$PATH corepack pnpm wallet:backend build +pnpm checks && pnpm test ``` -## Known Failure Modes And Workarounds +--- -1. Engine mismatch (`Unsupported environment`, Node 18 shown): +## Project Structure -- Cause: shell not using Node 20. -- Fix: put Node 20 bin first in `PATH` for every command (or `nvm use lts/iron` in an interactive shell that works reliably). +``` +testnet/ +├── package.json # Root workspace scripts +├── pnpm-workspace.yaml # Defines monorepo packages +├── tsconfig.base.json # Shared TypeScript config +├── .eslintrc.js, .prettierrc.js # Lint & format config +├── .nvmrc # Node version (lts/iron) +│ +├── .github/workflows/ +│ ├── ci.yml # PR validation (checks → builds → tests) +│ ├── deploy.yml # Main branch: deploy to staging/prod +│ └── setup/action.yml # Reusable setup action (Node + pnpm + install) +│ +├── local/ # Local development environment +│ ├── docker-compose.yml # Services: Postgres, Redis, Traefik, etc. +│ ├── .env.example, .env.local # Environment configuration +│ └── scripts/local-tools.sh # Cert, host, trust management +│ +├── packages/ +│ ├── wallet/ +│ │ ├── backend/src/ # NestJS application +│ │ ├── backend/tests/ # Jest unit tests +│ │ ├── frontend/src/ # Next.js application +│ │ └── shared/ # Shared wallet types +│ ├── boutique/ +│ │ ├── backend/src/ # Express application +│ │ ├── backend/tests/ # Jest unit tests +│ │ ├── frontend/src/ # Vite application +│ │ └── shared/ # Shared boutique types +│ └── shared/backend/src/ # Monorepo utilities (logging, DB, etc.) +│ +└── README.md, .github/TESTNET_architecture.md +``` -2. `TS5033` / `EACCES` writing under `packages/wallet/shared/dist`: +### Key Files -- Cause: prior Docker runs produced root-owned build artifacts. -- Symptom: root build and wallet backend build fail. -- Fix: ensure those files are writable by your user before rebuilding (example: adjust ownership/permissions of `packages/wallet/shared/dist` and `packages/wallet/shared/tsconfig.build.tsbuildinfo`). +- **Root scripts**: `package.json` lines 15–50 define all entry points +- **Workspace config**: `pnpm-workspace.yaml` lists 4 package globs +- **TypeScript config**: `tsconfig.base.json` (target ES2020, strict: true) +- **ESLint**: `.eslintrc.js` (--max-warnings=0 enforced in CI) +- **Prettier**: `.prettierrc.js` (checked before any lint/build) -3. `pnpm checks` failing even without your changes: +--- -- Cause: pre-existing formatting/lint drift. -- Mitigation: run targeted checks for touched packages and report baseline failures explicitly in PR notes. +## Common Scenarios & Troubleshooting -No command timeouts were observed in this validation pass. Failing commands exited quickly (under ~6s except build/test commands). +### Scenario: Node Version Mismatch +**Symptom**: `ERR_PNPM_UNSUPPORTED_ENGINE Expected version: ^20.12.1` -## Local Run Flow +**Fix**: +```bash +nvm install lts/iron && nvm use lts/iron && pnpm install --frozen-lockfile +``` -Required precondition before first `pnpm dev`: +### Scenario: Stale Dependencies +**Symptom**: Tests or build fail with module resolution errors +**Fix**: ```bash -cp local/.env.example local/.env +pnpm clean && pnpm install --frozen-lockfile && pnpm test ``` -GateHub-related variables in `local/.env` are required for full KYC/funding flows. +### Scenario: One Pre-Existing Test Failure +**File**: `packages/wallet/backend/tests/walletAddressKeys/controller.test.ts` line 175 +**Status**: Known issue; not blocking CI (Jest uses `--passWithNoTests`) +**Result**: `215 tests passed, 1 failed` (expected) -Main run modes: +### Scenario: Linting Fails Before Tests Run +**Symptom**: `pnpm checks` fails; `pnpm test` doesn't run + +**Fix**: +```bash +pnpm format # Auto-fixes 90% of issues +pnpm checks # Re-run validation +``` -- `pnpm dev` -> hot-reload backend containers + frontend dev servers. -- `pnpm dev:debug` -> backend debug mode (`9229`, `9230`). -- `pnpm dev:lite` -> run built backend (no hot reload). -- `pnpm local:down` -> stop local docker environment. -- `pnpm local:logs` -> follow container logs. +### Scenario: Tests Hang or Timeout +**Symptom**: Jest stalls during test run -Service endpoints: +**Workaround**: (Pre-applied in CI) Use `--detectOpenHandles --forceExit` flags: +```bash +pnpm wallet:backend test --detectOpenHandles --forceExit +``` -- Wallet FE: `http://localhost:4003` -- Wallet BE: `http://localhost:3003` -- Boutique FE: `http://localhost:4004` -- Boutique BE: `http://localhost:3004` -- Rafiki Admin UI: `http://localhost:3012` +### Scenario: Build Fails on Initial `pnpm build` +**Cause**: Likely missing Node 20 or missing deps -## Architecture And File Map +**Fix**: +```bash +node --version # Verify v20.x.x +pnpm install --frozen-lockfile +pnpm build +``` -High-signal root files: +--- -- `package.json`: canonical scripts and engine constraints. -- `pnpm-workspace.yaml`: workspace package patterns. -- `tsconfig.json`: top-level project references. -- `eslint.config.mjs`, `.prettierrc.js`: repo-wide code quality rules. -- `local/docker-compose.yml`: full local dependency graph (Postgres, Redis, Rafiki, Kratos, app backends). +## AI Agent Directives -Key source areas: +1. **Trust this file first**: Before running grep/search/explore commands, check if information exists here. Minimize search time by following the command sequences documented above. -- Wallet backend: `packages/wallet/backend/src` -- Wallet frontend: `packages/wallet/frontend` -- Boutique backend: `packages/boutique/backend/src` -- Boutique frontend: `packages/boutique/frontend/src` -- Shared backend utilities: `packages/shared/backend/src` +2. **Always validate prerequisites**: + - Node version: `node --version` → must be `v20.x.x` + - pnpm installed: `pnpm --version` → must be `9.x` + - Dependences installed: Run `pnpm install --frozen-lockfile` before any other command -## CI And PR Expectations +3. **Validate changes locally before committing**: + - **Format**: `pnpm format` + - **Lint**: `pnpm checks` + - **Test**: `pnpm test` (expect 215 pass, 1 pre-existing fail) + - **Build** (if package changed): `pnpm {package}:backend build` or `pnpm {package}:frontend build` -Primary workflows: +4. **Replicate CI locally**: The `.github/workflows/ci.yml` logic matches these commands exactly: + - Step 1: `pnpm checks` + - Step 2: `pnpm {package}:frontend build` (if labeled) + - Step 3: `pnpm {package}:backend test --detectOpenHandles --forceExit` (if build passed) -- `.github/workflows/ci.yml` - - Always runs `pnpm checks`. - - Build/test jobs are gated by PR labels (`package: wallet/backend`, `package: boutique/frontend`, etc.). - - Wallet backend CI test command: `pnpm wallet:backend build && pnpm wallet:backend test --detectOpenHandles --forceExit`. -- `.github/workflows/pr_title_check.yml` - - PR title must satisfy Conventional Commits. -- `.github/workflows/build-publish.yaml` - - Builds package matrix on PR/push; publishes images on `v*` tags. +5. **Document discovered issues**: If you find information in this file is incomplete or incorrect, update this file in your PR. -Before opening a PR, replicate the relevant CI subset for your changed package(s) and note any pre-existing baseline failures. +6. **Common agent mistakes to avoid**: + - Using `npm install` instead of `pnpm install --frozen-lockfile` ← **Always use pnpm** + - Editing Node version ← **Requires nvm; never repo-change** + - Running tests before `pnpm install --frozen-lockfile` ← **Always install first** + - Ignoring ESLint warnings ← **--max-warnings=0 enforced; must be 0** -## Agent Operating Rule +--- -When implementing changes, follow this file first, execute commands in the documented order, and avoid broad repo searches unless required details are missing or incorrect. +**Updated**: April 2026 +**Maintained By**: Interledger Foundation From 0072dcb3f348bc27a628c09bed3a5e102f89c4d0 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Wed, 15 Apr 2026 16:29:48 +0200 Subject: [PATCH 42/51] docs: tweaks to readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4808d2bd2..383167292 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ Recommended first-run startup order: # - Add custom hostnames to /etc/hosts (needs admin password) # - Generate self signed certificates for local env SSL # - Add self signed certificates to OS cert store -# - Build and docker launch containers required +# - Build and launch containers required to run environment pnpm run local:setup # Starts TestNet Wallet and Boutique in development mode From 3b5dc2607a324b1fc2dcc04ac9149eec91fd75d7 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Wed, 15 Apr 2026 16:32:15 +0200 Subject: [PATCH 43/51] style: prettier fix --- .github/copilot-instructions.md | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index ecff000d6..17696944b 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -3,6 +3,7 @@ ## Project Summary **Interledger TestNet** is an open-source, full-stack Node.js/TypeScript monorepo demonstrating Interledger Protocol integration. It consists of: + - **Wallet Backend** (NestJS) — Account management, KYC, payment rails - **Wallet Frontend** (Next.js) — User-facing web UI for accounts and transactions - **Boutique Backend** (Express) — E-commerce demo server @@ -52,12 +53,12 @@ pnpm local:setup ### Core Commands (Work Immediately After Setup) -| Command | Purpose | Time | Notes | -|---------|---------|------|-------| -| `pnpm checks` | ESLint (--max-warnings=0) + Prettier check | ~3s | **Always run before PR** — catches formatting and linting issues | -| `pnpm test` | Jest unit tests (wallet + boutique backends) | ~80s | Runs `jest --passWithNoTests --maxWorkers` per package; uses experimental VM modules | -| `pnpm format` | Auto-fix ESLint + Prettier | ~5s | Mutates files in place; safe to run | -| `pnpm build` | Compile all packages to `dist/` and `.next/` | ~30s | Requires correct Node version; builds dependencies first | +| Command | Purpose | Time | Notes | +| ------------- | -------------------------------------------- | ---- | ------------------------------------------------------------------------------------ | +| `pnpm checks` | ESLint (--max-warnings=0) + Prettier check | ~3s | **Always run before PR** — catches formatting and linting issues | +| `pnpm test` | Jest unit tests (wallet + boutique backends) | ~80s | Runs `jest --passWithNoTests --maxWorkers` per package; uses experimental VM modules | +| `pnpm format` | Auto-fix ESLint + Prettier | ~5s | Mutates files in place; safe to run | +| `pnpm build` | Compile all packages to `dist/` and `.next/` | ~30s | Requires correct Node version; builds dependencies first | ### Per-Package Commands @@ -67,7 +68,7 @@ pnpm wallet:backend build # Compile wallet backend (NestJS) pnpm wallet:backend test # Unit tests (Jest) pnpm wallet:backend dev # Watch mode (Requires local services up) -# Wallet frontend +# Wallet frontend pnpm wallet:frontend build # Next.js production build pnpm wallet:frontend dev # Dev server (Requires backend services) @@ -97,11 +98,13 @@ pnpm lint:fix # Auto-fix eslint issues Every PR automatically runs: 1. **Checks** (runs on all PRs) + ```bash pnpm checks # ESLint --max-warnings=0 + prettier --check ``` 2. **Conditional Builds** (based on PR labels: `package: wallet/frontend`, `package: wallet/backend`, etc.) + ```bash pnpm wallet:frontend build pnpm wallet:backend build @@ -116,6 +119,7 @@ Every PR automatically runs: ``` **To replicate locally** (before pushing): + ```bash pnpm checks && pnpm test ``` @@ -171,47 +175,58 @@ testnet/ ## Common Scenarios & Troubleshooting ### Scenario: Node Version Mismatch + **Symptom**: `ERR_PNPM_UNSUPPORTED_ENGINE Expected version: ^20.12.1` **Fix**: + ```bash nvm install lts/iron && nvm use lts/iron && pnpm install --frozen-lockfile ``` ### Scenario: Stale Dependencies + **Symptom**: Tests or build fail with module resolution errors **Fix**: + ```bash pnpm clean && pnpm install --frozen-lockfile && pnpm test ``` ### Scenario: One Pre-Existing Test Failure + **File**: `packages/wallet/backend/tests/walletAddressKeys/controller.test.ts` line 175 **Status**: Known issue; not blocking CI (Jest uses `--passWithNoTests`) **Result**: `215 tests passed, 1 failed` (expected) ### Scenario: Linting Fails Before Tests Run + **Symptom**: `pnpm checks` fails; `pnpm test` doesn't run **Fix**: + ```bash pnpm format # Auto-fixes 90% of issues pnpm checks # Re-run validation ``` ### Scenario: Tests Hang or Timeout + **Symptom**: Jest stalls during test run **Workaround**: (Pre-applied in CI) Use `--detectOpenHandles --forceExit` flags: + ```bash pnpm wallet:backend test --detectOpenHandles --forceExit ``` ### Scenario: Build Fails on Initial `pnpm build` + **Cause**: Likely missing Node 20 or missing deps **Fix**: + ```bash node --version # Verify v20.x.x pnpm install --frozen-lockfile From d08c4a0a6d0d10500af794f008354839a62e99f5 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Wed, 15 Apr 2026 16:42:19 +0200 Subject: [PATCH 44/51] fix: removed dangling e2e workspace --- pnpm-workspace.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 9097680e7..b5bd259eb 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,5 +1,4 @@ packages: - - 'e2e' - 'packages/wallet/*' - 'packages/boutique/*' - 'packages/shared/*' From e9beeddeb7e430137988059ee776a06457290efb Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Wed, 15 Apr 2026 16:58:37 +0200 Subject: [PATCH 45/51] fix: minor edit to prevent 'cannot update RefundProvider' bug --- packages/wallet/frontend/src/pages/send.tsx | 34 ++++++++++++--------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/packages/wallet/frontend/src/pages/send.tsx b/packages/wallet/frontend/src/pages/send.tsx index 76f3b0076..2739d68e2 100644 --- a/packages/wallet/frontend/src/pages/send.tsx +++ b/packages/wallet/frontend/src/pages/send.tsx @@ -106,6 +106,15 @@ const SendPage: NextPageWithLayout = ({ accounts, user }) => { // eslint-disable-next-line react-hooks/exhaustive-deps }, []) + // Consume refund wallet address from context in an effect rather than + // during render to avoid updating RefundProvider state while rendering. + useEffect(() => { + if (receiverWalletAddress !== '') { + sendForm.setValue('receiver', receiverWalletAddress) + setReceiverWalletAddress('') + } + }, [receiverWalletAddress, sendForm, setReceiverWalletAddress]) + const onAccountChange = async (accountId: string) => { const selectedAccount = accounts.find( (account) => account.value === accountId @@ -407,21 +416,16 @@ const SendPage: NextPageWithLayout = ({ accounts, user }) => { { - value = - receiverWalletAddress !== '' ? receiverWalletAddress : value - setReceiverWalletAddress('') - return ( - - ) - }} + render={({ field: { value } }) => ( + + )} />
{isSepa ? ( From 3aeb65fbf18009d66e395ba55cc51511284bb9cd Mon Sep 17 00:00:00 2001 From: dragosp1011 Date: Thu, 16 Apr 2026 14:27:15 +0300 Subject: [PATCH 46/51] fix: solve rafiki connection issues --- local/rafiki.yaml | 6 +++++- local/scripts/rafiki-setup.js | 2 +- packages/boutique/backend/src/open-payments/service.ts | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/local/rafiki.yaml b/local/rafiki.yaml index 7f8c6b747..25a16e899 100644 --- a/local/rafiki.yaml +++ b/local/rafiki.yaml @@ -72,6 +72,7 @@ services: - testnet environment: NODE_ENV: ${NODE_ENV:-development} + NODE_TLS_REJECT_UNAUTHORIZED: ${RAFIKI_BACKEND_NODE_TLS_REJECT_UNAUTHORIZED:-0} LOG_LEVEL: ${LOG_LEVEL:-debug} TRUST_PROXY: ${RAFIKI_BACKEND_TRUST_PROXY:-true} ADMIN_PORT: ${RAFIKI_BACKEND_ADMIN_PORT:-3001} @@ -112,6 +113,9 @@ services: - redis extra_hosts: - host.docker.internal:host-gateway + - testnet.test:host-gateway + - rafiki-backend.testnet.test:host-gateway + - auth.testnet.test:host-gateway labels: - traefik.enable=true - traefik.docker.network=testnet @@ -142,7 +146,7 @@ services: - testnet environment: PORT: ${RAFIKI_FRONTEND_PORT:-3012} - GRAPHQL_URL: ${RAFIKI_GRAPHQL_URL:-http://host.docker.internal:3001/graphql} + GRAPHQL_URL: ${RAFIKI_GRAPHQL_URL:-http://rafiki-backend:3001/graphql} OPEN_PAYMENTS_URL: ${RAFIKI_FRONTEND_OPEN_PAYMENTS_URL:-https://rafiki-backend.testnet.test/} ENABLE_INSECURE_MESSAGE_COOKIE: ${RAFIKI_FRONTEND_ENABLE_INSECURE_MESSAGE_COOKIE:-true} AUTH_ENABLED: ${RAFIKI_FRONTEND_AUTH_ENABLED:-false} diff --git a/local/scripts/rafiki-setup.js b/local/scripts/rafiki-setup.js index a5afd3aca..3d4fd6f7b 100644 --- a/local/scripts/rafiki-setup.js +++ b/local/scripts/rafiki-setup.js @@ -106,7 +106,7 @@ function buildEnv() { ), AUTH_IDENTITY_SERVER_SECRET: get( 'AUTH_IDENTITY_SERVER_SECRET', - 'auth-secret-key-12345' + 'dev_identity_server_secret' ), IDP_CONSENT_URL: get( 'IDP_CONSENT_URL', diff --git a/packages/boutique/backend/src/open-payments/service.ts b/packages/boutique/backend/src/open-payments/service.ts index a36d77860..45703ba68 100644 --- a/packages/boutique/backend/src/open-payments/service.ts +++ b/packages/boutique/backend/src/open-payments/service.ts @@ -525,8 +525,8 @@ export class OpenPayments implements IOpenPayments { } } ) - .catch(() => { - this.logger.error('Unable to create incoming payment.') + .catch((err) => { + this.logger.error('Unable to create incoming payment.', err) throw new InternalServerError() }) } From 9546e6bb3cfdebdce9c90ef1fa0ec3acce894a28 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Thu, 16 Apr 2026 15:48:46 +0200 Subject: [PATCH 47/51] fix: rafiki assets creation script should fail fast on error --- local/scripts/rafiki-setup.js | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/local/scripts/rafiki-setup.js b/local/scripts/rafiki-setup.js index 3d4fd6f7b..01dd3ca3d 100644 --- a/local/scripts/rafiki-setup.js +++ b/local/scripts/rafiki-setup.js @@ -214,6 +214,13 @@ async function graphqlRequest({ query, variables, operationName }, env) { logInfo(`GraphQL <- ${opName} HTTP ${response.status}`) + if (!response.ok) { + const text = await response.text().catch(() => '') + throw new Error( + `${opName} HTTP ${response.status}: ${text.slice(0, 500)}` + ) + } + const data = await response.json() if (data.errors && data.errors.length) { const message = data.errors.map((e) => e.message).join('\n') @@ -294,6 +301,7 @@ const getAssetByCodeAndScaleQuery = /* GraphQL */ ` id code scale + liquidity } } ` @@ -446,6 +454,7 @@ async function ensureAssets(env) { // Deposit liquidity for all assets (100000 units per asset, converted to minor units by scale) async function ensureLiquidity(env) { logInfo('Step 3/3: Ensuring asset liquidity is deposited') + const failures = [] for (const asset of assetsToEnsure) { let node @@ -460,11 +469,21 @@ async function ensureLiquidity(env) { node = res?.assetByCodeAndScale } catch (err) { logInfo(`Lookup failed for ${asset.code}:`, err.message) + failures.push(asset.code) continue } if (!node?.id) { - logInfo(`Skipping liquidity for ${asset.code}: asset id not found`) + logInfo(`Asset ${asset.code} not found, cannot deposit liquidity`) + failures.push(asset.code) + continue + } + + // Skip if asset already has liquidity + if (node.liquidity && BigInt(node.liquidity) > 0n) { + logInfo( + `Asset ${asset.code} already has liquidity (${node.liquidity}), skipping` + ) continue } @@ -491,14 +510,22 @@ async function ensureLiquidity(env) { ) if (!res?.depositAssetLiquidity?.success) { - logInfo(`Liquidity deposit failed for ${asset.code}`) + logInfo(`Liquidity deposit returned success=false for ${asset.code}`) + failures.push(asset.code) } else { logInfo(`Liquidity deposited for ${asset.code}`) } } catch (err) { logInfo(`Liquidity deposit error for ${asset.code}:`, err.message) + failures.push(asset.code) } } + + if (failures.length) { + throw new Error( + `Liquidity deposit failed for asset(s): ${failures.join(', ')}` + ) + } } // ---- main ----------------------------------------------------------------- From 343d96fe2d41ae73da25c98dc35481f18f890be1 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Thu, 16 Apr 2026 16:22:04 +0200 Subject: [PATCH 48/51] docs: cleaned up documentation and examples --- README.md | 28 +++++++++----------------- packages/boutique/backend/.env.example | 7 ++++--- packages/wallet/backend/.env.example | 11 +++++++--- 3 files changed, 22 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 383167292..e1351f69c 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,15 @@ pnpm local:help Recommended first-run startup order: ```sh +# Clean environment +pnpm clean + +# Install dependencies +pnpm i + +# Build all packages (required before first run) +pnpm build + # Setup will do the following tasks in one go # - Add custom hostnames to /etc/hosts (needs admin password) # - Generate self signed certificates for local env SSL @@ -134,21 +143,4 @@ Upon executing the above commands the following will be available: - [https://api.boutique.test](https://api.boutique.test) - Boutique backend API serving product and checkout functionality. - [https://mockgatehub.testnet.test](https://mockgatehub.testnet.test) - Mock GateHub service used for local funding and related sandbox flows. - [https://rafiki-frontend.testnet.test](https://rafiki-frontend.testnet.test) - Rafiki frontend UI. -- [https://rafiki-backend.testnet.test](https://rafiki-backend.testnet.test) - Rafiki backend service. - -Common local infrastructure commands: - -```sh -pnpm local:all # start full local stack (with Traefik) and print cert acceptance URLs -pnpm local:build # build docker images for local stack -pnpm local:rebuild # force rebuild docker images (no cache) -pnpm local:down # stop the local stack -pnpm local:reset # stop stack and remove docker volumes -pnpm local:logs # follow docker logs -pnpm local:certs # create TLS certs if missing (use FORCE_CERTS=1 to regenerate) -pnpm local:hosts # add host aliases to /etc/hosts (requires sudo) -pnpm local:trust # trust local TLS cert (auto-detect OS) -pnpm local:trust:linux # trust local TLS cert on Linux -pnpm local:trust:macos # trust local TLS cert on macOS -pnpm local:rafiki-assets # run Rafiki asset setup script -``` +- [https://rafiki-backend.testnet.test](https://rafiki-backend.testnet.test) - Rafiki backend service. \ No newline at end of file diff --git a/packages/boutique/backend/.env.example b/packages/boutique/backend/.env.example index 2b70e7b70..4c4930eb9 100644 --- a/packages/boutique/backend/.env.example +++ b/packages/boutique/backend/.env.example @@ -1,5 +1,6 @@ -# You can copy this file to .env and fill in the values to run the backend locally. Do not commit the .env -# file with real values to git. +# You can copy this file to .env.local and adjust values to run the backend locally. +# If you create both .env.local and .env, values in .env override values from .env.local. +# Do not commit sensitive real credentials. ########## INFRASTRUCTURE ####################################################################### ## chances are you dont need to change these for local development, but you can if you want to @@ -15,7 +16,7 @@ ######### OPEN PAYMENTS CONFIGURATION to make Boutique work ###################################### ## You need to create a wallet using https://testnet.test and then create Developer keys for it. -## Note that the payment pointer needs to be prexed with `https://` and not `$` as is common when +## Note that the payment pointer needs to be prefixed with `https://` and not `$` as is common when ## writing payment pointers. The backend will convert it to the correct format when fetching the ## wallet address and signing requests. # PAYMENT_POINTER=https://change-me diff --git a/packages/wallet/backend/.env.example b/packages/wallet/backend/.env.example index f833aa679..7fb5cdc87 100644 --- a/packages/wallet/backend/.env.example +++ b/packages/wallet/backend/.env.example @@ -26,8 +26,8 @@ # GATEHUB_IFRAME_MANAGED_RAMP_URL=https://mockgatehub.testnet.test # GATEHUB_IFRAME_EXCHANGE_URL=https://mockgatehub.testnet.test # GATEHUB_IFRAME_ONBOARDING_URL=https://mockgatehub.testnet.test -# GATEHUB_ACCESS_KEY=local-test-app-id -# GATEHUB_SECRET_KEY=local-test-app-secret +# GATEHUB_ACCESS_KEY=mock_access_key +# GATEHUB_SECRET_KEY=mock_secret_key # GATEHUB_WEBHOOK_SECRET=6d6f636b5f776562686f6f6b5f736563726574 # GATEHUB_GATEWAY_UUID=mock-gateway-uuid # GATEHUB_SETTLEMENT_WALLET_ADDRESS=$ilp.interledger-test.dev/interledger @@ -38,12 +38,17 @@ # GATEHUB_NAME_ON_CARD=TestnetUser # GATEHUB_CARD_PP_PREFIX=TEST +## Optional SEPA-specific credentials (fall back to standard GateHub keys if unset). +# GATEHUB_SEPA_ACCESS_KEY= +# GATEHUB_SEPA_SECRET_KEY= +# GATEHUB_SEPA_ORG_ID= + ########## RAFIKI / AUTH / OPEN PAYMENTS ######################################################## # GRAPHQL_ENDPOINT=http://localhost:3011/graphql # AUTH_GRAPHQL_ENDPOINT=http://localhost:3008/graphql # AUTH_DOMAIN=https://auth.testnet.test -# AUTH_IDENTITY_SERVER_SECRET=auth-secret-key-12345 +# AUTH_IDENTITY_SERVER_SECRET=dev_identity_server_secret # RAFIKI_WEBHOOK_SIGNATURE_SECRET=327132b5-99e9-4eb8-8a25-2b7d7738ece1 # ADMIN_SIGNATURE_VERSION=1 # ADMIN_API_SECRET=secret-key From 8e02e903bd715e65c6e21d79b037e369c1c4dab5 Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Fri, 17 Apr 2026 09:17:15 +0200 Subject: [PATCH 49/51] fix: upgraded local environment to use Traefik v3.6 --- local/traefik.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/local/traefik.yaml b/local/traefik.yaml index 10c060269..40be9e7f4 100644 --- a/local/traefik.yaml +++ b/local/traefik.yaml @@ -1,7 +1,7 @@ services: traefik: container_name: traefik-local - image: traefik:v3.2 + image: traefik:v3.6 command: - --api.dashboard=true - --providers.docker=true From 8f9b2b955e403c7c2843957a2c61d22178c0fc8b Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Fri, 17 Apr 2026 09:22:32 +0200 Subject: [PATCH 50/51] style: prettier linting --- local/scripts/rafiki-setup.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/local/scripts/rafiki-setup.js b/local/scripts/rafiki-setup.js index 01dd3ca3d..c4e9a3a8d 100644 --- a/local/scripts/rafiki-setup.js +++ b/local/scripts/rafiki-setup.js @@ -216,9 +216,7 @@ async function graphqlRequest({ query, variables, operationName }, env) { if (!response.ok) { const text = await response.text().catch(() => '') - throw new Error( - `${opName} HTTP ${response.status}: ${text.slice(0, 500)}` - ) + throw new Error(`${opName} HTTP ${response.status}: ${text.slice(0, 500)}`) } const data = await response.json() From c41c49c3ca1da7a064f86eb924dff4321836ac8e Mon Sep 17 00:00:00 2001 From: Stephan Butler Date: Fri, 17 Apr 2026 09:23:53 +0200 Subject: [PATCH 51/51] style: did pnpm format --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e1351f69c..fd1d4511b 100644 --- a/README.md +++ b/README.md @@ -143,4 +143,4 @@ Upon executing the above commands the following will be available: - [https://api.boutique.test](https://api.boutique.test) - Boutique backend API serving product and checkout functionality. - [https://mockgatehub.testnet.test](https://mockgatehub.testnet.test) - Mock GateHub service used for local funding and related sandbox flows. - [https://rafiki-frontend.testnet.test](https://rafiki-frontend.testnet.test) - Rafiki frontend UI. -- [https://rafiki-backend.testnet.test](https://rafiki-backend.testnet.test) - Rafiki backend service. \ No newline at end of file +- [https://rafiki-backend.testnet.test](https://rafiki-backend.testnet.test) - Rafiki backend service.