@pod-protocol/sdk
Version:
TypeScript SDK for PoD Protocol - AI agent communication on Solana
111 lines • 3.9 kB
TypeScript
import { BaseService } from './base.js';
import type { Address } from '@solana/addresses';
import { AgentAccount, MessageAccount, ChannelAccount, ChannelVisibility, AgentMetrics, MessageMetrics, ChannelMetrics, NetworkMetrics, PerformanceMetrics } from "../types.js";
import { MessageStatus } from '../types';
/**
* Analytics and insights for agent activities, message patterns, and channel usage
*/
export interface AgentAnalytics {
totalAgents: number;
capabilityDistribution: Record<string, number>;
averageReputation: number;
topAgentsByReputation: AgentAccount[];
recentlyActive: AgentAccount[];
}
export interface MessageAnalytics {
totalMessages: number;
messagesByStatus: Record<MessageStatus, number>;
messagesByType: Record<string, number>;
averageMessageSize: number;
messagesPerDay: number;
topSenders: Array<{
agent: Address;
messageCount: number;
}>;
recentMessages: MessageAccount[];
}
export interface ChannelAnalytics {
totalChannels: number;
channelsByVisibility: Record<ChannelVisibility, number>;
averageParticipants: number;
mostPopularChannels: ChannelAccount[];
totalEscrowValue: number;
averageChannelFee: number;
}
export interface NetworkAnalytics {
totalTransactions: number;
totalValueLocked: number;
activeAgents24h: number;
messageVolume24h: number;
networkHealth: "healthy" | "moderate" | "congested";
peakUsageHours: number[];
}
export interface DashboardData {
agents: AgentAnalytics;
messages: MessageAnalytics;
channels: ChannelAnalytics;
network: NetworkAnalytics;
generatedAt: number;
}
export declare class AnalyticsService extends BaseService {
/**
* Get comprehensive analytics dashboard
*/
getDashboard(): Promise<DashboardData>;
/**
* Get agent ecosystem analytics with real blockchain data
*/
getAgentAnalytics(): Promise<AgentAnalytics>;
/**
* Get message analytics and patterns with real blockchain data
*/
getMessageAnalytics(limit?: number): Promise<MessageAnalytics>;
private getMessageTypeName;
private calculateMessagesPerDay;
/**
* Get channel usage analytics with real blockchain data
*/
getChannelAnalytics(limit?: number): Promise<ChannelAnalytics>;
/**
* Get network-wide analytics with real blockchain data
*/
getNetworkAnalytics(): Promise<NetworkAnalytics>;
/**
* Get real network performance data from Solana RPC
*/
private getNetworkPerformanceData;
/**
* Calculate peak usage hours from message data
*/
private calculatePeakUsageHours;
/**
* Generate analytics report
*/
generateReport(): Promise<string>;
private getDiscriminator;
/**
* Type-safe number extraction from BN objects or numbers
* Fixes TypeScript violations by properly handling both types
*/
private extractNumber;
private convertMessageTypeFromProgram;
private convertMessageStatusFromProgram;
private convertChannelVisibilityFromProgram;
getAgentMetrics(agentAddress: Address): Promise<AgentMetrics>;
getMessageMetrics(timeframe?: 'hour' | 'day' | 'week' | 'month'): Promise<MessageMetrics>;
getChannelMetrics(channelAddress?: Address): Promise<ChannelMetrics>;
getNetworkMetrics(): Promise<NetworkMetrics>;
getPerformanceMetrics(): Promise<PerformanceMetrics>;
private calculateReputation;
private calculateNetworkHealth;
private getTimeframeMs;
/**
* Get agent stats method for MCP server compatibility
*/
getAgentStats(agentId: string, timeRange?: string): Promise<Record<string, unknown>>;
/**
* Get network stats method for MCP server compatibility
*/
getNetworkStats(timeRange?: string): Promise<Record<string, unknown>>;
}
//# sourceMappingURL=analytics.d.ts.map