/**
 * @fileoverview Operation Distance Calculator
 * Calculates logical distance between buffer operations for merge decisions
 * @author Jeffrey R. Day
 * @version 1.0.0
 */
/**
 * Represents position information for an operation
 */
export class OperationPosition {
    constructor(preExecution: any, postExecution?: null);
    preExecution: any;
    postExecution: number | null;
    /**
     * Set the post-execution position
     * @param {number} position - Position after operation executed
     */
    setPostExecution(position: number): void;
    /**
     * Check if this position info is complete (has both pre and post execution positions)
     * @returns {boolean}
     */
    isComplete(): boolean;
}
/**
 * Lightweight operation descriptor for distance calculations
 */
export class OperationDescriptor {
    /**
     * Create from a BufferOperation
     * @param {BufferOperation} bufferOp - Source operation
     * @returns {OperationDescriptor}
     */
    static fromBufferOperation(bufferOp: BufferOperation): OperationDescriptor;
    constructor(type: any, position: any, dataLength?: number, originalDataLength?: number, operationNumber?: number);
    type: any;
    position: OperationPosition;
    dataLength: number;
    originalDataLength: number;
    operationNumber: number;
    /**
     * Set post-execution position
     * @param {number} position - Position after execution
     */
    setPostExecutionPosition(position: number): void;
    /**
     * Get the length of content this operation adds to the final buffer
     * @returns {number}
     */
    getInsertedLength(): number;
}
/**
 * Calculator for logical distance between operations
 */
export class OperationDistanceCalculator {
    /**
     * Calculate logical distance between two operations
     * @param {OperationDescriptor} op1 - First operation
     * @param {OperationDescriptor} op2 - Second operation
     * @param {Object} options - Calculation options
     * @param {boolean} options.debug - Enable debug logging
     * @returns {number} - Logical distance (0 = adjacent/overlapping)
     */
    static calculateDistance(op1: OperationDescriptor, op2: OperationDescriptor, options?: {
        debug: boolean;
    }): number;
    /**
     * Calculate the range affected by an operation in post-execution coordinates
     * @param {OperationDescriptor} op - Operation that has executed
     * @returns {{start: number, end: number}} - Affected range
     * @private
     */
    private static _calculateOperationRange;
    /**
     * Calculate distance from an operation to a range
     * @param {OperationDescriptor} op - Operation to test
     * @param {{start: number, end: number}} range - Target range
     * @returns {number} - Distance to range
     * @private
     */
    private static _calculateDistanceToRange;
    /**
     * Calculate distance for insert operations
     * @param {OperationDescriptor} op - Insert operation
     * @param {{start: number, end: number}} range - Target range
     * @returns {number} - Distance
     * @private
     */
    private static _calculateInsertDistance;
    /**
     * Calculate distance for delete operations
     * @param {OperationDescriptor} op - Delete operation
     * @param {{start: number, end: number}} range - Target range
     * @returns {number} - Distance
     * @private
     */
    private static _calculateDeleteDistance;
    /**
     * Calculate distance for overwrite operations
     * @param {OperationDescriptor} op - Overwrite operation
     * @param {{start: number, end: number}} range - Target range
     * @returns {number} - Distance
     * @private
     */
    private static _calculateOverwriteDistance;
    /**
     * Get debug distance calculation
     * @param {OperationDescriptor} firstOp - First operation
     * @param {OperationDescriptor} secondOp - Second operation
     * @param {{start: number, end: number}} range - Calculated range
     * @param {number} distance - Calculated distance
     * @returns {{firstOp, secondOp, range, distance}} - Debugging descriptions
     * @private
     */
    private static _getDebugDistanceCalculation;
}
//# sourceMappingURL=operation-distance.d.ts.map