/**
 * EncodingPipeline class for NehoID
 * Provides a fluent interface for building encoding pipelines
 */
import { ENC_TYPE } from "./encoder";
export declare class EncodingPipeline {
    private encoders;
    private compressionMethod;
    private isReversible;
    private metadata;
    /**
     * Add an encoder to the pipeline
     * @param encoder Encoding type to add
     * @returns The pipeline instance for chaining
     */
    addEncoder(encoder: ENC_TYPE): EncodingPipeline;
    /**
     * Add multiple encoders to the pipeline
     * @param encoders Array of encoding types to add
     * @returns The pipeline instance for chaining
     */
    addEncoders(encoders: ENC_TYPE[]): EncodingPipeline;
    /**
     * Add compression to the pipeline
     * @param method Compression method to use
     * @returns The pipeline instance for chaining
     */
    addCompression(method: "lz77" | "gzip"): EncodingPipeline;
    /**
     * Enable reversibility for the pipeline
     * @returns The pipeline instance for chaining
     */
    enableReversibility(): EncodingPipeline;
    /**
     * Disable reversibility for the pipeline
     * @returns The pipeline instance for chaining
     */
    disableReversibility(): EncodingPipeline;
    /**
     * Add metadata to the pipeline
     * @param key Metadata key
     * @param value Metadata value
     * @returns The pipeline instance for chaining
     */
    addMetadata(key: string, value: any): EncodingPipeline;
    /**
     * Process input through the pipeline
     * @param input String to process
     * @returns Processed string
     */
    process(input: string): string;
    /**
     * Reverse the pipeline processing (if reversible)
     * @param input Processed string to reverse
     * @returns Original string or null if not reversible
     */
    reverse(input: string): string | null;
    /**
     * Get the pipeline configuration
     * @returns Configuration object
     */
    getConfig(): {
        encoders: ENC_TYPE[];
        compression: "none" | "lz77" | "gzip";
        reversible: boolean;
        metadata: Record<string, any>;
    };
}
//# sourceMappingURL=pipeline.d.ts.map