/**
 * Knowledge item stored in the system
 */
interface KnowledgeItem {
    /** Unique key for the knowledge item */
    key: string;
    /** The actual knowledge data */
    data: any;
    /** Metadata about the knowledge item */
    metadata: Record<string, unknown>;
    /** When the knowledge was last updated */
    updatedAt: Date;
}
/**
 * Options for the knowledge system
 */
export interface KnowledgeSystemOptions {
    /** Path to persistent storage directory */
    storageDir?: string;
    /** Whether to enable persistence */
    enablePersistence?: boolean;
}
/**
 * System for storing, retrieving, and exchanging knowledge
 */
export declare class KnowledgeSystem {
    /** In-memory storage for knowledge */
    private knowledgeStore;
    /** Core knowledge contributed by plugins */
    private coreKnowledge;
    /** Options for the knowledge system */
    private options;
    constructor(options?: KnowledgeSystemOptions);
    /**
     * Store knowledge in the system
     * @param key Unique key for the knowledge
     * @param data Knowledge data to store
     * @param metadata Additional metadata about the knowledge
     */
    storeKnowledge(key: string, data: any, metadata?: Record<string, unknown>): Promise<void>;
    /**
     * Retrieve knowledge from the system
     * @param key Knowledge key to retrieve
     * @returns The stored knowledge data, or null if not found
     */
    retrieveKnowledge(key: string): Promise<any | null>;
    /**
     * Contribute knowledge to the core system
     * @param knowledge Knowledge data to contribute
     * @param metadata Additional metadata about the knowledge
     */
    contributeToCore(knowledge: any, metadata: Record<string, unknown>): Promise<void>;
    /**
     * Get a list of available knowledge keys
     * @param pluginId Optional plugin ID to filter by
     * @param pattern Optional pattern to filter keys
     * @returns List of matching knowledge keys
     */
    listKnowledgeKeys(pluginId?: string, pattern?: string): Promise<string[]>;
    /**
     * Get all knowledge items
     * @returns Array of all knowledge items
     */
    getAllKnowledge(): KnowledgeItem[];
    /**
     * Get all core knowledge contributions
     * @returns Array of all core knowledge contributions
     */
    getCoreKnowledge(): any[];
    /**
     * Process a knowledge contribution
     * @param knowledge Knowledge data to process
     * @param metadata Metadata about the knowledge
     */
    private processContribution;
    /**
     * Load knowledge from persistent storage
     */
    private loadFromPersistentStorage;
    /**
     * Save knowledge to persistent storage
     */
    private saveToStorage;
}
/**
 * Create a knowledge system
 */
export declare function createKnowledgeSystem(options?: KnowledgeSystemOptions): KnowledgeSystem;
export {};
