From 5a18157592d0649f58c95a8b5bd2b45bfd982d28 Mon Sep 17 00:00:00 2001 From: nafiuishaq Date: Sat, 27 Jun 2026 14:14:54 +0100 Subject: [PATCH 1/7] implemented the discovery --- .../stellar-provider-discovery.controller.ts | 27 +++++++++++++++++++ .../stellar-provider-discovery.module.ts | 9 +++++++ 2 files changed, 36 insertions(+) create mode 100644 src/providers/discovery/stellar/stellar-provider-discovery.controller.ts create mode 100644 src/providers/discovery/stellar/stellar-provider-discovery.module.ts diff --git a/src/providers/discovery/stellar/stellar-provider-discovery.controller.ts b/src/providers/discovery/stellar/stellar-provider-discovery.controller.ts new file mode 100644 index 00000000..c1fd7cd6 --- /dev/null +++ b/src/providers/discovery/stellar/stellar-provider-discovery.controller.ts @@ -0,0 +1,27 @@ +import { Controller, Get, Param, Post } from '@nestjs/common'; +import { StellarProviderDiscoveryService } from './stellar-provider-discovery.service'; +import { StellarProviderMetadata } from './stellar-provider-discovery.types'; + +@Controller('providers/stellar') +export class StellarProviderDiscoveryController { + constructor( + private readonly discoveryService: StellarProviderDiscoveryService, + ) {} + + @Get() + async getAllProviders(): Promise { + return this.discoveryService.getAll(); + } + + @Get(':id') + async getProviderById( + @Param('id') id: string, + ): Promise { + const provider = this.discoveryService.get(id); + if (!provider) { + // In a real application, you'd throw a NotFoundException here + throw new Error('Provider not found'); + } + return provider; + } +} \ No newline at end of file diff --git a/src/providers/discovery/stellar/stellar-provider-discovery.module.ts b/src/providers/discovery/stellar/stellar-provider-discovery.module.ts new file mode 100644 index 00000000..e6fe5cc6 --- /dev/null +++ b/src/providers/discovery/stellar/stellar-provider-discovery.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { StellarProviderDiscoveryController } from './stellar-provider-discovery.controller'; +import { StellarProviderDiscoveryService } from './stellar-provider-discovery.service'; + +@Module({ + controllers: [StellarProviderDiscoveryController], + providers: [StellarProviderDiscoveryService], +}) +export class StellarProviderDiscoveryModule {} \ No newline at end of file From df74da830891ac27d2bcde34a1ead70ba8c2d84e Mon Sep 17 00:00:00 2001 From: nafiuishaq Date: Sat, 27 Jun 2026 14:15:20 +0100 Subject: [PATCH 2/7] implemented the discovery --- apps/api/src/app.module.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/api/src/app.module.ts b/apps/api/src/app.module.ts index 02a62599..ef04b379 100644 --- a/apps/api/src/app.module.ts +++ b/apps/api/src/app.module.ts @@ -26,6 +26,7 @@ import { IntelligenceHubModule } from './intelligence-hub/stellar/intelligence-h import { AssetDiscoveryModule } from './api/assets/discovery/stellar/asset-discovery.module'; import { RecommendationMetricsModule } from './metrics/recommendations/recommendation-metrics.module'; import { StellarEcosystemMetricsModule } from './metrics/ecosystem/stellar/stellar-ecosystem-metrics.module'; +import { StellarProviderDiscoveryModule } from 'src/providers/discovery/stellar/stellar-provider-discovery.module'; @Module({ imports: [ @@ -64,6 +65,7 @@ import { StellarEcosystemMetricsModule } from './metrics/ecosystem/stellar/stell AssetDiscoveryModule, RecommendationMetricsModule, StellarEcosystemMetricsModule, + StellarProviderDiscoveryModule, ThrottlerModule.forRoot([ { ttl: 60000, @@ -87,4 +89,4 @@ import { StellarEcosystemMetricsModule } from './metrics/ecosystem/stellar/stell AppService, ], }) -export class AppModule {} +export class AppModule {} \ No newline at end of file From 5cbd23edef9d525d02e456ea2dd537c4325ffb28 Mon Sep 17 00:00:00 2001 From: nafiuishaq Date: Sat, 27 Jun 2026 14:17:29 +0100 Subject: [PATCH 3/7] implemented the route --- src/analytics/coverage/stellar/asset-coverage.service.ts | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/analytics/coverage/stellar/asset-coverage.service.ts diff --git a/src/analytics/coverage/stellar/asset-coverage.service.ts b/src/analytics/coverage/stellar/asset-coverage.service.ts new file mode 100644 index 00000000..1d6972a2 --- /dev/null +++ b/src/analytics/coverage/stellar/asset-coverage.service.ts @@ -0,0 +1 @@ +// This file will contain the logic for analyzing asset coverage. \ No newline at end of file From 98515785eb4f4bf3780106af03f10fceaaa9a3e0 Mon Sep 17 00:00:00 2001 From: nafiuishaq Date: Sat, 27 Jun 2026 14:17:57 +0100 Subject: [PATCH 4/7] implemented the route --- .../stellar/asset-coverage.controller.ts | 1 + .../coverage/stellar/asset-coverage.module.ts | 1 + .../coverage/stellar/asset-coverage.types.ts | 17 +++++++++++++++++ 3 files changed, 19 insertions(+) create mode 100644 src/analytics/coverage/stellar/asset-coverage.controller.ts create mode 100644 src/analytics/coverage/stellar/asset-coverage.module.ts create mode 100644 src/analytics/coverage/stellar/asset-coverage.types.ts diff --git a/src/analytics/coverage/stellar/asset-coverage.controller.ts b/src/analytics/coverage/stellar/asset-coverage.controller.ts new file mode 100644 index 00000000..1f406696 --- /dev/null +++ b/src/analytics/coverage/stellar/asset-coverage.controller.ts @@ -0,0 +1 @@ +// This file will contain the controller for exposing asset coverage analysis through an API. \ No newline at end of file diff --git a/src/analytics/coverage/stellar/asset-coverage.module.ts b/src/analytics/coverage/stellar/asset-coverage.module.ts new file mode 100644 index 00000000..dc9d845f --- /dev/null +++ b/src/analytics/coverage/stellar/asset-coverage.module.ts @@ -0,0 +1 @@ +// This file will contain the module definition for the asset coverage feature. \ No newline at end of file diff --git a/src/analytics/coverage/stellar/asset-coverage.types.ts b/src/analytics/coverage/stellar/asset-coverage.types.ts new file mode 100644 index 00000000..2731b831 --- /dev/null +++ b/src/analytics/coverage/stellar/asset-coverage.types.ts @@ -0,0 +1,17 @@ +export interface Asset { + id: string; + name: string; + // Add any other relevant asset properties here +} + +export interface Route { + sourceAsset: Asset; + destinationAsset: Asset; + // Add any other relevant route properties here +} + +export interface CoverageReport { + supportedAssets: Asset[]; + unsupportedAssets: Asset[]; + coveragePercentage: number; +} \ No newline at end of file From a3178ed860d1750805d703e92335a7b0a98b46fd Mon Sep 17 00:00:00 2001 From: nafiuishaq Date: Sat, 27 Jun 2026 14:18:13 +0100 Subject: [PATCH 5/7] implemented the route --- .../stellar/asset-coverage.controller.ts | 14 ++++- .../stellar/asset-coverage.service.ts | 58 ++++++++++++++++++- 2 files changed, 70 insertions(+), 2 deletions(-) diff --git a/src/analytics/coverage/stellar/asset-coverage.controller.ts b/src/analytics/coverage/stellar/asset-coverage.controller.ts index 1f406696..9d47de39 100644 --- a/src/analytics/coverage/stellar/asset-coverage.controller.ts +++ b/src/analytics/coverage/stellar/asset-coverage.controller.ts @@ -1 +1,13 @@ -// This file will contain the controller for exposing asset coverage analysis through an API. \ No newline at end of file +import { Controller, Get } from '@nestjs/common'; +import { AssetCoverageService } from './asset-coverage.service'; +import { CoverageReport } from './asset-coverage.types'; + +@Controller('coverage/stellar') +export class AssetCoverageController { + constructor(private readonly coverageService: AssetCoverageService) {} + + @Get() + async getCoverageReport(): Promise { + return this.coverageService.getCoverageReport(); + } +} \ No newline at end of file diff --git a/src/analytics/coverage/stellar/asset-coverage.service.ts b/src/analytics/coverage/stellar/asset-coverage.service.ts index 1d6972a2..7ba93353 100644 --- a/src/analytics/coverage/stellar/asset-coverage.service.ts +++ b/src/analytics/coverage/stellar/asset-coverage.service.ts @@ -1 +1,57 @@ -// This file will contain the logic for analyzing asset coverage. \ No newline at end of file +import { Injectable } from '@nestjs/common'; +import { Asset, CoverageReport, Route } from './asset-coverage.types'; + +@Injectable() +export class AssetCoverageService { + async getCoverageReport(): Promise { + const allAssets = await this.getAllAssets(); + const allRoutes = await this.getAllRoutes(); + + const supportedAssets = new Set(); + allRoutes.forEach((route) => { + supportedAssets.add(route.sourceAsset); + supportedAssets.add(route.destinationAsset); + }); + + const supportedAssetsArray = Array.from(supportedAssets); + const unsupportedAssets = allAssets.filter( + (asset) => + !supportedAssetsArray.find( + (supportedAsset) => supportedAsset.id === asset.id, + ), + ); + + const coveragePercentage = + (supportedAssetsArray.length / allAssets.length) * 100; + + return { + supportedAssets: supportedAssetsArray, + unsupportedAssets, + coveragePercentage, + }; + } + + private async getAllAssets(): Promise { + // In a real application, this would fetch data from a database or API + return [ + { id: 'XLM', name: 'Stellar Lumens' }, + { id: 'USDC', name: 'USD Coin' }, + { id: 'ARST', name: 'Argentine Peso' }, + { id: 'BRLT', name: 'Brazilian Real' }, + ]; + } + + private async getAllRoutes(): Promise { + // In a real application, this would fetch data from a database or API + const xlm: Asset = { id: 'XLM', name: 'Stellar Lumens' }; + const usdc: Asset = { id: 'USDC', name: 'USD Coin' }; + const arst: Asset = { id: 'ARST', name: 'Argentine Peso' }; + + return [ + { sourceAsset: xlm, destinationAsset: usdc }, + { sourceAsset: usdc, destinationAsset: xlm }, + { sourceAsset: xlm, destinationAsset: arst }, + { sourceAsset: arst, destinationAsset: xlm }, + ]; + } +} \ No newline at end of file From 41c0c46df1e81b87d387ee651fb7890a6e7c82dc Mon Sep 17 00:00:00 2001 From: nafiuishaq Date: Sat, 27 Jun 2026 14:18:48 +0100 Subject: [PATCH 6/7] implemented the route --- apps/api/src/app.module.ts | 2 ++ .../coverage/stellar/asset-coverage.module.ts | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/api/src/app.module.ts b/apps/api/src/app.module.ts index ef04b379..db8a5253 100644 --- a/apps/api/src/app.module.ts +++ b/apps/api/src/app.module.ts @@ -27,6 +27,7 @@ import { AssetDiscoveryModule } from './api/assets/discovery/stellar/asset-disco import { RecommendationMetricsModule } from './metrics/recommendations/recommendation-metrics.module'; import { StellarEcosystemMetricsModule } from './metrics/ecosystem/stellar/stellar-ecosystem-metrics.module'; import { StellarProviderDiscoveryModule } from 'src/providers/discovery/stellar/stellar-provider-discovery.module'; +import { AssetCoverageModule } from 'src/analytics/coverage/stellar/asset-coverage.module'; @Module({ imports: [ @@ -66,6 +67,7 @@ import { StellarProviderDiscoveryModule } from 'src/providers/discovery/stellar/ RecommendationMetricsModule, StellarEcosystemMetricsModule, StellarProviderDiscoveryModule, + AssetCoverageModule, ThrottlerModule.forRoot([ { ttl: 60000, diff --git a/src/analytics/coverage/stellar/asset-coverage.module.ts b/src/analytics/coverage/stellar/asset-coverage.module.ts index dc9d845f..1e315a55 100644 --- a/src/analytics/coverage/stellar/asset-coverage.module.ts +++ b/src/analytics/coverage/stellar/asset-coverage.module.ts @@ -1 +1,9 @@ -// This file will contain the module definition for the asset coverage feature. \ No newline at end of file +import { Module } from '@nestjs/common'; +import { AssetCoverageController } from './asset-coverage.controller'; +import { AssetCoverageService } from './asset-coverage.service'; + +@Module({ + controllers: [AssetCoverageController], + providers: [AssetCoverageService], +}) +export class AssetCoverageModule {} \ No newline at end of file From 07efc6a49ace3c1c9786d10c421dc5b0541ea23c Mon Sep 17 00:00:00 2001 From: codesailor4 Date: Mon, 29 Jun 2026 13:47:28 +0000 Subject: [PATCH 7/7] build --- apps/api/src/app.module.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/api/src/app.module.ts b/apps/api/src/app.module.ts index db8a5253..c265395a 100644 --- a/apps/api/src/app.module.ts +++ b/apps/api/src/app.module.ts @@ -26,8 +26,8 @@ import { IntelligenceHubModule } from './intelligence-hub/stellar/intelligence-h import { AssetDiscoveryModule } from './api/assets/discovery/stellar/asset-discovery.module'; import { RecommendationMetricsModule } from './metrics/recommendations/recommendation-metrics.module'; import { StellarEcosystemMetricsModule } from './metrics/ecosystem/stellar/stellar-ecosystem-metrics.module'; -import { StellarProviderDiscoveryModule } from 'src/providers/discovery/stellar/stellar-provider-discovery.module'; -import { AssetCoverageModule } from 'src/analytics/coverage/stellar/asset-coverage.module'; +import { StellarProviderDiscoveryModule } from '../../../src/providers/discovery/stellar/stellar-provider-discovery.module'; +import { AssetCoverageModule } from '../../../src/analytics/coverage/stellar/asset-coverage.module'; @Module({ imports: [