/**
 * Import-to-Increment Converter
 *
 * Bridges the gap between ExternalItem (imported from GitHub/JIRA/ADO)
 * and SpecWeave increment creation with platform-specific suffixes.
 *
 * @module import-to-increment
 * @since 1.0.272
 */
import { type Platform } from '../sync/types.js';
import type { ExternalItem } from './external-importer.js';
/**
 * Result of a single increment import.
 */
export interface ImportedIncrement {
    /** Full increment ID (e.g., "0271G-fix-login-bug") */
    incrementId: string;
    /** Absolute path to created increment directory */
    incrementPath: string;
    /** Canonical external reference */
    externalRef: string;
    /** Source platform */
    platform: Platform;
    /** Files created in the increment */
    createdFiles: string[];
}
/**
 * Result of a skipped (duplicate) import.
 */
export interface SkippedImport {
    /** The external item that was skipped */
    item: ExternalItem;
    /** Canonical external reference */
    externalRef: string;
    /** Existing increment ID that already has this ref */
    existingIncrementId: string;
    /** Reason for skipping */
    reason: string;
}
/**
 * Result of a batch import operation.
 */
export interface BatchImportResult {
    /** Successfully created increments */
    created: ImportedIncrement[];
    /** Skipped duplicate imports */
    skipped: SkippedImport[];
    /** Errors encountered */
    errors: Array<{
        item: ExternalItem;
        error: string;
    }>;
}
/**
 * Options for the import-to-increment converter.
 */
export interface ImportToIncrementOptions {
    /** Project root directory */
    projectRoot: string;
    /** Target project ID (for per-project collision prevention) */
    projectId?: string;
}
/**
 * Converts external items (from GitHub/JIRA/ADO) into SpecWeave increments
 * with platform-specific suffixes (G/J/A) and duplicate prevention.
 *
 * @example
 * ```typescript
 * const converter = new ImportToIncrementConverter({
 *   projectRoot: '/path/to/project',
 *   projectId: 'my-app',
 * });
 *
 * const result = await converter.createIncrement(externalItem);
 * console.log(result.incrementId); // "0271G-fix-login-bug"
 * ```
 */
export declare class ImportToIncrementConverter {
    private projectRoot;
    private projectId?;
    private refDetector;
    constructor(options: ImportToIncrementOptions);
    /**
     * Check if an external item has already been imported as an increment.
     *
     * @param item - External item to check
     * @returns Existing increment ID if found, null otherwise
     */
    checkDuplicate(item: ExternalItem): string | null;
    /**
     * Create a single increment from an external item.
     *
     * @param item - External item to import
     * @returns Created increment details
     * @throws Error if item is a duplicate (use checkDuplicate first) or creation fails
     */
    createIncrement(item: ExternalItem): Promise<ImportedIncrement>;
    /**
     * Batch create increments from multiple external items.
     * Automatically deduplicates and reports skipped items.
     *
     * @param items - External items to import
     * @returns Batch result with created, skipped, and error arrays
     */
    createIncrements(items: ExternalItem[]): Promise<BatchImportResult>;
    /**
     * Build a canonical external_ref string from an ExternalItem.
     */
    private buildExternalRef;
}
//# sourceMappingURL=import-to-increment.d.ts.map