anon-identity
Version:
Decentralized identity framework with DIDs, Verifiable Credentials, and privacy-preserving selective disclosure
82 lines • 2.29 kB
TypeScript
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