import type { Memory } from "../../../types/memory.ts";
import type { UUID } from "../../../types/primitives.ts";
export type JsonPrimitive = string | number | boolean | null;
export type JsonValue = JsonPrimitive | JsonValue[] | {
    [key: string]: JsonValue;
};
export type JsonObject = {
    [key: string]: JsonValue;
};
declare module "../../../types/service.ts" {
    interface ServiceTypeRegistry {
        EXPERIENCE: "EXPERIENCE";
    }
}
declare module "@elizaos/core" {
    interface ServiceTypeRegistry {
        EXPERIENCE: "EXPERIENCE";
    }
}
export declare const ExperienceServiceType: {
    EXPERIENCE: "EXPERIENCE";
};
export declare enum ExperienceType {
    SUCCESS = "success",// Agent accomplished something
    FAILURE = "failure",// Agent failed at something
    DISCOVERY = "discovery",// Agent discovered new information
    CORRECTION = "correction",// Agent corrected a mistake
    LEARNING = "learning",// Agent learned something new
    HYPOTHESIS = "hypothesis",// Agent formed a hypothesis
    VALIDATION = "validation",// Agent validated a hypothesis
    WARNING = "warning"
}
export declare enum OutcomeType {
    POSITIVE = "positive",
    NEGATIVE = "negative",
    NEUTRAL = "neutral",
    MIXED = "mixed"
}
export interface Experience {
    id: UUID;
    agentId: UUID;
    type: ExperienceType;
    outcome: OutcomeType;
    context: string;
    action: string;
    result: string;
    learning: string;
    tags: string[];
    domain: string;
    relatedExperiences?: UUID[];
    supersedes?: UUID;
    confidence: number;
    importance: number;
    createdAt: number;
    updatedAt: number;
    lastAccessedAt?: number;
    accessCount: number;
    previousBelief?: string;
    correctedBelief?: string;
    embedding?: number[];
    memoryIds?: UUID[];
}
export interface ExperienceQuery {
    query?: string;
    type?: ExperienceType | ExperienceType[];
    outcome?: OutcomeType | OutcomeType[];
    domain?: string | string[];
    tags?: string[];
    minImportance?: number;
    minConfidence?: number;
    timeRange?: {
        start?: number;
        end?: number;
    };
    limit?: number;
    includeRelated?: boolean;
}
export interface ExperienceAnalysis {
    pattern?: string;
    frequency?: number;
    reliability?: number;
    alternatives?: string[];
    recommendations?: string[];
}
export interface ExperienceEvent {
    experienceId: UUID;
    eventType: "created" | "accessed" | "updated" | "superseded";
    timestamp: number;
    metadata?: JsonObject;
}
export interface ExperienceMemory extends Memory {
    experienceId: string;
    experienceType: ExperienceType;
}
//# sourceMappingURL=types.d.ts.map