import { AgentActivity, ActivityQuery, ActivitySearchResult, ActivitySummary, ActivityType, ActivityStatus } from './types';
export interface IndexEntry {
    id: string;
    agentDID: string;
    parentDID: string;
    timestamp: Date;
    type: ActivityType;
    serviceDID: string;
    status: ActivityStatus;
    scopes: string[];
    sessionId?: string;
    ipfsHash?: string;
    year: number;
    month: number;
    day: number;
    hour: number;
}
export interface IndexStats {
    totalActivities: number;
    agentCount: number;
    serviceCount: number;
    dateRange: {
        earliest: Date;
        latest: Date;
    };
    byType: Record<ActivityType, number>;
    byStatus: Record<ActivityStatus, number>;
}
export declare class ActivityIndex {
    private index;
    private agentIndex;
    private serviceIndex;
    private typeIndex;
    private statusIndex;
    private dateIndex;
    private scopeIndex;
    /**
     * Index a single activity for fast searching
     */
    indexActivity(activity: AgentActivity): Promise<void>;
    /**
     * Index multiple activities in batch
     */
    indexActivities(activities: AgentActivity[]): Promise<void>;
    /**
     * Search activities based on query parameters
     */
    search(query: ActivityQuery): Promise<ActivitySearchResult>;
    /**
     * Get activity summary for an agent
     */
    getActivitySummary(agentDID: string, period: 'hour' | 'day' | 'week' | 'month' | 'year', startDate?: Date): Promise<ActivitySummary>;
    /**
     * Get activities by multiple agent DIDs
     */
    getActivitiesByAgents(agentDIDs: string[]): Promise<AgentActivity[]>;
    /**
     * Get activities by date range
     */
    getActivitiesByDateRange(start: Date, end: Date): Promise<AgentActivity[]>;
    /**
     * Get index statistics
     */
    getStats(): IndexStats;
    /**
     * Remove activity from index
     */
    removeActivity(activityId: string): Promise<boolean>;
    /**
     * Clear all indexed data
     */
    clear(): void;
    private addToIndex;
    private removeFromIndex;
    private intersectSets;
    private filterByDateRange;
    private getActivitiesFromIds;
    private sortActivities;
    private getPeriodStart;
    private getPeriodEnd;
}
//# sourceMappingURL=activity-index.d.ts.map