import type { Entity } from "../types/environment";
import type { JsonValue, UUID } from "../types/primitives";
import type { IAgentRuntime } from "../types/runtime";
import { Service } from "../types/service";
interface ContactCategory {
    id: string;
    name: string;
    description?: string;
    color?: string;
}
interface ContactPreferences {
    preferredCommunicationChannel?: string;
    timezone?: string;
    language?: string;
    contactFrequency?: "daily" | "weekly" | "monthly" | "quarterly";
    doNotDisturb?: boolean;
    notes?: string;
    /** Index signature for metadata compatibility */
    [key: string]: string | boolean | undefined;
}
export interface ContactInfo {
    entityId: UUID;
    categories: string[];
    tags: string[];
    preferences: ContactPreferences;
    customFields: Record<string, JsonValue>;
    privacyLevel: "public" | "private" | "restricted";
    lastModified: string;
}
interface RelationshipAnalytics {
    strength: number;
    interactionCount: number;
    lastInteractionAt?: string;
    averageResponseTime?: number;
    sentimentScore?: number;
    topicsDiscussed: string[];
}
export declare class RolodexService extends Service {
    static serviceType: "rolodex";
    capabilityDescription: string;
    private contactInfoCache;
    private analyticsCache;
    private categoriesCache;
    private static readonly CONTACT_CACHE_LIMIT;
    private static readonly ANALYTICS_CACHE_LIMIT;
    private setCacheWithLimit;
    initialize(runtime: IAgentRuntime): Promise<void>;
    stop(): Promise<void>;
    static start(runtime: IAgentRuntime): Promise<Service>;
    private loadContactInfoFromComponents;
    addContact(entityId: UUID, categories?: string[], preferences?: ContactPreferences, customFields?: Record<string, JsonValue>): Promise<ContactInfo>;
    updateContact(entityId: UUID, updates: Partial<ContactInfo>): Promise<ContactInfo | null>;
    getContact(entityId: UUID): Promise<ContactInfo | null>;
    removeContact(entityId: UUID): Promise<boolean>;
    searchContacts(criteria: {
        categories?: string[];
        tags?: string[];
        searchTerm?: string;
        privacyLevel?: string;
    }): Promise<ContactInfo[]>;
    analyzeRelationship(sourceEntityId: UUID, targetEntityId: UUID): Promise<RelationshipAnalytics | null>;
    getRelationshipInsights(entityId: UUID): Promise<{
        strongestRelationships: Array<{
            entity: Entity;
            analytics: RelationshipAnalytics;
        }>;
        needsAttention: Array<{
            entity: Entity;
            daysSinceContact: number;
        }>;
        recentInteractions: Array<{
            entity: Entity;
            lastInteraction: string;
        }>;
    }>;
    getCategories(): Promise<ContactCategory[]>;
    addCategory(category: ContactCategory): Promise<void>;
    setContactPrivacy(entityId: UUID, privacyLevel: "public" | "private" | "restricted"): Promise<boolean>;
    canAccessContact(requestingEntityId: UUID, targetEntityId: UUID): Promise<boolean>;
}
export {};
//# sourceMappingURL=rolodex.d.ts.map