import { ColumnConfig } from '../../core/types';
/**
 * Check if a column can be moved based on its own metadata.
 * This checks column-level properties like lockPosition and suppressMovable.
 *
 * Note: For full movability checks including plugin constraints (e.g., pinned columns),
 * use `grid.queryPlugins({ type: PLUGIN_QUERIES.CAN_MOVE_COLUMN, context: column })`
 * which queries all plugins via the generic plugin query system.
 *
 * @param column - The column configuration to check
 * @returns True if the column can be moved based on its metadata
 */
export declare function canMoveColumn<TRow = unknown>(column: ColumnConfig<TRow>): boolean;
/**
 * Move a column from one position to another in the order array.
 *
 * @param columns - Array of field names in current order
 * @param fromIndex - The current index of the column to move
 * @param toIndex - The target index to move the column to
 * @returns New array with updated order
 */
export declare function moveColumn(columns: string[], fromIndex: number, toIndex: number): string[];
/**
 * Calculate the drop index based on the current drag position.
 *
 * @param dragX - The current X position of the drag
 * @param headerRect - The bounding rect of the header container
 * @param columnWidths - Array of column widths in order
 * @returns The index where the column should be dropped
 */
export declare function getDropIndex(dragX: number, headerRect: DOMRect, columnWidths: number[]): number;
/**
 * Reorder columns according to a specified order.
 * Columns not in the order array are appended at the end.
 *
 * @param columns - Array of column configurations
 * @param order - Array of field names specifying the desired order
 * @returns New array of columns in the specified order
 */
export declare function reorderColumns<TRow = unknown>(columns: ColumnConfig<TRow>[], order: string[]): ColumnConfig<TRow>[];
//# sourceMappingURL=column-drag.d.ts.map