import { PipelineVersionRecord, LLMInput, GenerationResult } from "./types";
export type PreProcessingFn = (input: LLMInput) => Promise<LLMInput> | LLMInput;
export type PostProcessingFn = (raw: string, extraData?: any) => Promise<string> | string;
export interface DistilPipelineConfig {
    pipelineName: string;
    modelName: string;
    systemPrompt: string;
    userPrompt: string;
    defaultParameters?: Record<string, any>;
    preprocess?: PreProcessingFn;
    postprocess?: PostProcessingFn;
}
export declare class DistilPipeline {
    private inferenceEngine;
    private logger;
    private preprocessFn;
    private postprocessFn;
    pipelineName: string;
    modelName: string;
    systemPrompt: string;
    userPrompt: string;
    defaultParameters?: Record<string, any>;
    constructor(config: DistilPipelineConfig, logLevel?: "DEBUG" | "INFO" | "WARNING" | "ERROR");
    /**
     * Runs the pipeline:
     * 1. Validate input and merge default parameters.
     * 2. Apply custom preprocessing.
     * 3. Compute the template hash.
     * 4. Run inference and apply postprocessing.
     * 5. Return output and metadata.
     */
    generate(inputData: any): Promise<GenerationResult | null>;
}
/**
 * Get all pipeline versions.
 */
export declare function getAllPipelineVersions(): Promise<PipelineVersionRecord[]>;
/**
 * Add a tag to a pipeline version.
 */
export declare function addTagToPipelineVersion(id: string, tag: string): Promise<boolean>;
/**
 * Rate a pipeline version (1-5 stars).
 */
export declare function ratePipelineVersion(id: string, rating: number): Promise<boolean>;
/**
 * Mark a pipeline version as finetuned.
 */
export declare function markPipelineVersionAsFinetuned(id: string): Promise<boolean>;
/**
 * Get generations for a pipeline version
 */
export declare function getGenerationsForVersion(pipelineName: string, versionId: string): Promise<{
    id: string;
    processedOutput: string;
    metadata: {
        input: {
            raw: {
                [key: string]: any;
            };
            preprocessed: {
                systemPrompt: string;
                userPrompt: string;
                parameters?: Record<string, any> | undefined;
            };
            pipelineName: string;
        };
        timeTaken: number;
        generationCost: number;
        pipelineHash: string;
        rawOutput: string;
        pipelineName: string;
    };
    rating: number | undefined;
    isFinetuned: boolean | undefined;
}[]>;
/**
 * Get a specific generation by ID
 */
export declare function getGenerationById(pipelineName: string, id: string): Promise<{
    id: string;
    processedOutput: string;
    metadata: {
        input: {
            raw: {
                [key: string]: any;
            };
            preprocessed: {
                systemPrompt: string;
                userPrompt: string;
                parameters?: Record<string, any> | undefined;
            };
            pipelineName: string;
        };
        timeTaken: number;
        generationCost: number;
        pipelineHash: string;
        rawOutput: string;
        pipelineName: string;
    };
    rating: number | undefined;
    isFinetuned: boolean | undefined;
}>;
/**
 * Rate a generation
 */
export declare function rateGeneration(pipelineName: string, id: string, rating: number): Promise<boolean>;
/**
 * Mark generations for finetuning
 */
export declare function markGenerationsForFinetuning(ids: string[]): Promise<boolean>;
