import { EventEmitter } from 'events';
export interface UsageRecord {
    projectId: string;
    agentId: string;
    model: string;
    inputTokens: number;
    outputTokens: number;
    duration?: number;
    timestamp: string;
    cost?: number;
}
export interface CostReport {
    totalCost: number;
    costByModel: Record<string, number>;
    costByAgent: Record<string, number>;
    tokenUsage: {
        input: number;
        output: number;
        total: number;
    };
}
export interface PerformanceMetrics {
    model: string;
    latency: number;
    tokensPerSecond: number;
    projectId: string;
    agentId: string;
    timestamp: string;
}
export declare class SynapseFeatures extends EventEmitter {
    private usageLogPath;
    private performanceLogPath;
    private telemetryEndpoint?;
    private modelPricing;
    constructor(config?: {
        dataDir?: string;
        telemetryEndpoint?: string;
    });
    private ensureDataDir;
    /**
     * Track model usage for a request
     */
    trackUsage(params: {
        projectId: string;
        agentId: string;
        model: string;
        inputTokens: number;
        outputTokens?: number;
        duration?: number;
    }): Promise<void>;
    /**
     * Get project costs for a time period
     */
    getProjectCosts(projectId: string, since?: Date): Promise<CostReport>;
    /**
     * Record performance metrics
     */
    recordPerformance(params: PerformanceMetrics): Promise<void>;
    /**
     * Query usage records
     */
    private queryUsage;
    /**
     * Calculate cost for token usage
     */
    private calculateCost;
    /**
     * Append record to NDJSON log file
     */
    private appendToLog;
    /**
     * Send telemetry to Synapse
     */
    private sendTelemetry;
    /**
     * Get usage statistics
     */
    getStats(projectId?: string, days?: number): Promise<{
        totalRequests: number;
        totalTokens: number;
        totalCost: number;
        averageTokensPerRequest: number;
        modelDistribution: Record<string, number>;
    }>;
}
//# sourceMappingURL=synapse-features.d.ts.map