@agentdao/core
Version:
Core functionality, skills, and ready-made UI components for AgentDAO - Web3 subscriptions, content generation, social media, help support, live chat, RSS fetching, web search, and agent pricing integration
95 lines (94 loc) • 3.11 kB
TypeScript
export interface AnalyticsEvent {
event_type: string;
event_name: string;
agent_id?: string;
skill_name?: string;
user_id?: string;
metadata?: Record<string, any>;
timestamp?: string;
}
export interface AnalyticsConfig {
enabled: boolean;
endpoint?: string;
apiKey?: string;
batchSize?: number;
flushInterval?: number;
rateLimit?: number;
}
export declare class AnalyticsService {
private static instance;
private config;
private eventQueue;
private processingQueue;
private rateLimitMap;
private client;
private static IMPORTANT_EVENTS;
private constructor();
static getInstance(config?: AnalyticsConfig): AnalyticsService;
/**
* Track an important event
*/
trackEvent(event: AnalyticsEvent): Promise<void>;
/**
* Track skill usage
*/
trackSkillUsage(skillName: string, agentId?: string, metadata?: Record<string, any>): Promise<void>;
/**
* Track API calls
*/
trackApiCall(endpoint: string, success: boolean, duration?: number, metadata?: Record<string, any>): Promise<void>;
/**
* Track errors
*/
trackError(error: Error, context: string, agentId?: string, metadata?: Record<string, any>): Promise<void>;
/**
* Track performance metrics
*/
trackPerformance(metric: string, value: number, unit: string, metadata?: Record<string, any>): Promise<void>;
/**
* Track monetization events
*/
trackMonetization(event: string, amount?: number, currency?: string, metadata?: Record<string, any>): Promise<void>;
/**
* Check rate limiting
*/
private isRateLimited;
/**
* Batch process queued events
*/
private flushQueue;
/**
* Send events to custom endpoint
*/
private sendToEndpoint;
/**
* Send events via AgentBridge
*/
private sendViaAgentBridge;
/**
* Get analytics summary
*/
getAnalyticsSummary(timeRange?: string): Promise<any>;
/**
* Enable/disable analytics
*/
setEnabled(enabled: boolean): void;
/**
* Update configuration
*/
updateConfig(newConfig: Partial<AnalyticsConfig>): void;
/**
* Get current queue size
*/
getQueueSize(): number;
/**
* Force flush queue
*/
forceFlush(): Promise<void>;
}
export declare const trackEvent: (event: AnalyticsEvent) => Promise<void>;
export declare const trackSkillUsage: (skillName: string, agentId?: string, metadata?: Record<string, any>) => Promise<void>;
export declare const trackApiCall: (endpoint: string, success: boolean, duration?: number, metadata?: Record<string, any>) => Promise<void>;
export declare const trackError: (error: Error, context: string, agentId?: string, metadata?: Record<string, any>) => Promise<void>;
export declare const trackPerformance: (metric: string, value: number, unit: string, metadata?: Record<string, any>) => Promise<void>;
export declare const trackMonetization: (event: string, amount?: number, currency?: string, metadata?: Record<string, any>) => Promise<void>;