• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

safe-global / safe-client-gateway / 19298270154 / 1
89%
main: 89%

Build:
DEFAULT BRANCH: main
Ran 12 Nov 2025 01:06PM UTC
Files 1970
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

12 Nov 2025 12:59PM UTC coverage: 88.645% (-0.7%) from 89.342%
19298270154.1

push

github

web-flow
feature(portfolio): Add Portfolio Endpoint with Zerion Support (#2755)

* feat(portfolio): add domain entities and configuration

Add core portfolio domain entities to represent wallet holdings:
- Portfolio: container for token balances and app positions with totals
- TokenBalance: wallet tokens with price and balance info
- AppBalance: DeFi positions grouped by application
- AppPosition: individual positions within apps

Add configuration for Zerion API integration with cache TTL and
dust filtering threshold. Portfolio provider enum supports Zerion only.

Test builders included for all entities following project Builder pattern.

* feat(portfolio): add Zerion API integration

Implement Zerion API client to fetch portfolio positions including
wallet token balances and DeFi app positions.

Features:
- Fetch positions with currency conversion support
- Network-to-chain ID mapping for 50+ chains
- Filter non-displayable and trash positions
- Transform Zerion API response to domain entities
- Group app positions by application
- Support trusted tokens filter

Integration includes comprehensive error handling and Zod schema
validation for API responses. Updated Zerion balance schemas to
support relationships and flags fields.

* feat(portfolio): add repository with caching and filtering

Implement portfolio repository as the main business logic layer
with caching strategy and position filtering capabilities.

Caching:
- Simple single-cache strategy for complete portfolio data
- Configurable TTL for cache expiration
- Per-address and per-currency cache keys

Filtering:
- Chain filter: limit results to specific chain IDs
- Trusted filter: only verified tokens
- Dust filter: exclude positions below $1 USD threshold
- Automatic total recalculation after filtering

Repository integrates with Zerion API and handles cache management
transparently. Cache can be cleared per address via clearPortfolio.

* feat(portfolio): add REST API endpoint

Expose portfolio func... (continued)

2914 of 3741 branches covered (77.89%)

Branch coverage included in aggregate %.

26524 of 29468 relevant lines covered (90.01%)

310.58 hits per line

Source Files on job run-unit-tests - 19298270154.1
  • Tree
  • List 1970
  • Changed 272
  • Source Changed 9
  • Coverage Changed 271
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 19298270154
  • bdd53b33 on github
  • Prev Job for on main (#19165266509.1)
  • Next Job for on main (#19335648772.1)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc