import { ProgramBuilder } from './programs';
import { PromptTemplate } from './prompts';
/**
 * Metadata for tracking item usage
 */
export interface UsageMetadata {
    /** When the item was last used */
    lastUsed?: Date;
    /** Total number of times the item has been used */
    useCount: number;
    /** Performance metrics if available */
    performance?: {
        /** Average execution time in ms */
        avgExecutionTime?: number;
        /** Success rate (0-1) */
        successRate?: number;
    };
    /** Custom tags for organization */
    tags?: string[];
    /** User-provided description */
    description?: string;
}
/**
 * Result of comparing two versions
 */
export interface ComparisonResult {
    /** Older version ID */
    oldVersion: string;
    /** Newer version ID */
    newVersion: string;
    /** Differences between versions */
    differences: {
        /** Changes in structure */
        structural?: string[];
        /** Changes in metadata */
        metadata?: string[];
        /** Performance difference if available */
        performance?: {
            executionTime?: number;
            successRate?: number;
        };
    };
}
/**
 * Selvedge Manager for handling stored items with metadata and CLI
 */
export declare class SelvedgeManager {
    /**
     * Create a new SelvedgeManager instance
     */
    constructor();
    /**
     * Initialize usage tracking
     */
    private initializeUsageTracking;
    /**
     * Get the path to the metadata file for an item
     */
    private getMetadataPath;
    /**
     * Load metadata for an item
     */
    private loadMetadata;
    /**
     * Save metadata for an item
     */
    private saveMetadata;
    /**
     * Track usage of an item
     */
    trackUsage(type: 'prompt' | 'program', name: string, executionTime?: number, success?: boolean): Promise<void>;
    /**
     * Add or update metadata for an item
     */
    updateMetadata(type: 'prompt' | 'program', name: string, updates: Partial<UsageMetadata>): Promise<void>;
    /**
     * Compare two versions of an item
     */
    compareVersions(type: 'prompt' | 'program', name: string, v1: string, v2: string): Promise<ComparisonResult>;
    /**
     * Load a program with usage tracking
     */
    loadProgram<T = string>(name: string, version?: string): Promise<ProgramBuilder<T>>;
    /**
     * Load a prompt with usage tracking
     */
    loadPrompt<T = any>(name: string, version?: string): Promise<PromptTemplate<T>>;
    /**
     * Get detailed information about an item
     */
    getItemInfo(type: 'prompt' | 'program', name: string): Promise<{
        name: string;
        type: 'prompt' | 'program';
        versions: string[];
        metadata: UsageMetadata;
    }>;
    /**
     * Export an item to a file
     */
    exportItem(type: 'prompt' | 'program', name: string, outputPath: string, version?: string): Promise<void>;
    /**
     * Import an item from a file
     */
    importItem(filePath: string): Promise<{
        type: 'prompt' | 'program';
        name: string;
        version: string;
    }>;
    /**
     * List all items with their metadata
     */
    listAllItems(): Promise<Array<{
        name: string;
        type: 'prompt' | 'program';
        versionCount: number;
        metadata: UsageMetadata;
    }>>;
    /**
     * Add tags to an item
     */
    addTags(type: 'prompt' | 'program', name: string, tags: string[]): Promise<void>;
    /**
     * Remove tags from an item
     */
    removeTags(type: 'prompt' | 'program', name: string, tags: string[]): Promise<void>;
    /**
     * Set a description for an item
     */
    setDescription(type: 'prompt' | 'program', name: string, description: string): Promise<void>;
}
export declare const manager: SelvedgeManager;
//# sourceMappingURL=manager.d.ts.map