/**
 * Base types and interfaces for the MCP Memory Service
 */
import { EntityType, PersonType, MemoryType, ImportanceLevel, BufferItemStatus, MCPToolResultStatus } from './enums.js';
export interface BaseEntity {
    id?: string | number;
    createdAt?: string;
    updatedAt?: string;
}
export interface User extends BaseEntity {
    id: string;
    email: string;
    name?: string;
    organization?: string;
    apiKey?: string;
    oauthProvider?: string;
    oauthId?: string;
    isActive: boolean;
    metadata?: Record<string, unknown>;
}
export interface Entity extends BaseEntity {
    id?: number | string;
    userId?: string;
    name: string;
    entityType: EntityType;
    personType?: PersonType;
    description?: string;
    company?: string;
    title?: string;
    email?: string;
    phone?: string;
    address?: string;
    website?: string;
    socialMedia?: string;
    notes?: string;
    importance: ImportanceLevel;
    tags?: string[];
    relationships?: string;
    lastInteraction?: string;
    interactionCount: number;
    metadata?: Record<string, unknown>;
}
export interface Memory extends BaseEntity {
    id?: number | string;
    userId?: string;
    title: string;
    content: string;
    memoryType: MemoryType;
    importance: ImportanceLevel;
    tags?: string[];
    entityIds?: number[];
    embedding?: number[];
    metadata?: Record<string, unknown>;
    isArchived: boolean;
}
export interface Interaction extends BaseEntity {
    id?: number | string;
    userId?: string;
    userPrompt: string;
    assistantResponse: string;
    context?: string;
    feedback?: string;
    sentiment?: string;
    metadata?: Record<string, unknown>;
}
export interface BufferItem {
    id: string;
    type: 'memory' | 'entity' | 'interaction';
    data: Record<string, unknown>;
    status: BufferItemStatus;
    priority: number;
    retryCount: number;
    maxRetries: number;
    createdAt: string;
    processedAt?: string;
    error?: string;
}
export interface MCPToolResult {
    status: MCPToolResultStatus;
    message: string;
    data?: unknown;
    error?: string;
}
export interface SearchResult<T = unknown> {
    item: T;
    score: number;
    type: 'memory' | 'entity' | 'interaction';
}
export type SearchStrategy = 'recency' | 'frequency' | 'importance' | 'similarity' | 'composite';
export interface VectorSearchOptions {
    query?: string;
    limit?: number;
    threshold?: number;
    strategy?: SearchStrategy;
    includeEmbedding?: boolean;
    memoryTypes?: MemoryType[];
    entityTypes?: EntityType[];
}
export interface DatabaseConfig {
    url: string;
    authToken: string;
    syncUrl?: string;
}
export interface ApiResponse<T = unknown> {
    success: boolean;
    data?: T;
    error?: string;
    message?: string;
}
//# sourceMappingURL=base.d.ts.map