/**
 * Corpus Builder
 *
 * Utility for creating and exporting ground truth corpora with validation.
 *
 * @module testing/corpus/corpus-builder
 */
import { CorpusType, CorpusSchema, GroundTruthItem, ValidationResult } from './ground-truth-manager.js';
/**
 * Builder options
 */
export interface CorpusBuilderOptions {
    /** Corpus type */
    type: CorpusType;
    /** Corpus name */
    name: string;
    /** Corpus description */
    description: string;
    /** Schema for ground truth validation */
    schema: CorpusSchema;
    /** Linked NFRs */
    linkedNFRs: string[];
}
/**
 * Export options
 */
export interface ExportOptions {
    /** Output directory */
    outputDir: string;
    /** Version string (semver) */
    version: string;
    /** Maximum items per data file */
    maxItemsPerFile?: number;
}
/**
 * CorpusBuilder - Build and export ground truth corpora
 *
 * @example
 * ```typescript
 * const builder = new CorpusBuilder({
 *   type: 'ai-vs-human',
 *   name: 'AI vs Human Writing Corpus',
 *   description: 'Labeled corpus for AI pattern detection validation',
 *   schema: {
 *     groundTruthType: 'boolean',
 *     formatDescription: 'true for AI-generated, false for human-written'
 *   },
 *   linkedNFRs: ['NFR-ACC-001']
 * });
 *
 * // Add items
 * builder.addItem({
 *   id: 'doc-001',
 *   content: 'This is a sample document...',
 *   groundTruth: true, // AI-generated
 *   metadata: { source: 'gpt-4' }
 * });
 *
 * // Validate and export
 * const validation = builder.validate();
 * if (validation.valid) {
 *   await builder.export({
 *     outputDir: './tests/fixtures/corpora',
 *     version: '1.0.0'
 *   });
 * }
 * ```
 */
export declare class CorpusBuilder {
    private options;
    private items;
    constructor(options: CorpusBuilderOptions);
    /**
     * Add an item to the corpus
     *
     * @param item - Ground truth item
     * @throws {Error} If item ID already exists
     */
    addItem(item: GroundTruthItem): void;
    /**
     * Add multiple items to the corpus
     *
     * @param items - Array of ground truth items
     */
    addItems(items: GroundTruthItem[]): void;
    /**
     * Remove an item from the corpus
     *
     * @param itemId - Item identifier
     * @returns True if item was removed
     */
    removeItem(itemId: string): boolean;
    /**
     * Get an item by ID
     *
     * @param itemId - Item identifier
     * @returns Item or undefined
     */
    getItem(itemId: string): GroundTruthItem | undefined;
    /**
     * Get all items
     *
     * @returns Array of all items
     */
    getAllItems(): GroundTruthItem[];
    /**
     * Get item count
     */
    getItemCount(): number;
    /**
     * Clear all items
     */
    clear(): void;
    /**
     * Validate the corpus
     *
     * @returns Validation result
     */
    validate(): ValidationResult;
    /**
     * Validate a single item against schema
     */
    private validateItem;
    /**
     * Calculate label distribution
     */
    private calculateLabelDistribution;
    /**
     * Export corpus to files
     *
     * @param options - Export options
     * @throws {Error} If corpus is invalid
     */
    export(options: ExportOptions): Promise<void>;
    /**
     * Split array into chunks
     */
    private chunkArray;
    /**
     * Import items from existing JSON file
     *
     * @param filePath - Path to JSON file
     * @throws {Error} If file cannot be read or parsed
     */
    importFromFile(filePath: string): Promise<void>;
    /**
     * Get corpus statistics
     */
    getStatistics(): {
        itemCount: number;
        labelDistribution: Record<string, number>;
        type: CorpusType;
    };
}
/**
 * Pre-configured builder factories for each corpus type
 */
export declare const CorpusBuilders: {
    /**
     * Create AI vs Human writing corpus builder
     */
    aiVsHuman(): CorpusBuilder;
    /**
     * Create codebase metadata corpus builder
     */
    codebases(): CorpusBuilder;
    /**
     * Create traceability links corpus builder
     */
    traceability(): CorpusBuilder;
    /**
     * Create security attacks corpus builder
     */
    securityAttacks(): CorpusBuilder;
    /**
     * Create template recommendations corpus builder
     */
    templateRecommendations(): CorpusBuilder;
};
//# sourceMappingURL=corpus-builder.d.ts.map