import { type RefObject } from 'react';
import { View } from 'react-native';
import type { Coordinates, DraggableItem, DraggableMasonryGridListData, Vertices } from './types';
export declare function asyncWaitForMS(waitForMS: number): Promise<unknown>;
/**
 * @param min
 * @param max
 * @returns {number} random integer between min(inclusive) and max(inclusive)
 */
export declare const generateRandomInteger: (min: number, max: number) => number;
/**
 *
 * @param array
 * @param index
 * @returns new array with item at added at given index
 */
export declare function arrayAddItemAtIndex<T>(array: T[], index: number, item: T): T[];
/**
 *
 * @param array
 * @param index
 * @returns new array with item removed at given index
 */
export declare function arrayRemoveItemAtIndex<T>(array: T[], index: number): T[];
/**
 *
 * @param array
 * @param indexFrom
 * @param indexTo
 * @returns new array with item that was in indexFrom moved to indexTo
 */
export declare function arrayMoveFromIndexToIndex<T>(array: DraggableItem<T>[], indexFrom: number, indexTo: number): DraggableItem<T>[];
export declare function getGridColumns<T>(data: DraggableItem<T>[], numberOfColumns: number, columnWidth: number): {
    columnsForGrid: DraggableMasonryGridListData<T>[][];
    gridDataInSequence: DraggableMasonryGridListData<T>[];
    columnHeights: number[];
};
export declare function getRawDataFromGridColumns<T>(columnsForGrid: DraggableMasonryGridListData<T>[][], columnHeights: number[]): {
    rawDataInSequence: DraggableItem<T>[];
};
export declare const checkIfContainsCoordinates: (coordinates: Coordinates, vertices: Vertices) => boolean;
export declare const checkForOverlap: (verticesA: Vertices, verticesB: Vertices) => boolean;
export declare const getDistanceBetweenVertices: (coordinatesA: Coordinates, coordinatesB: Coordinates) => number;
export declare const getViewVertices: (cardRef: RefObject<View | null> | undefined, options?: {
    scale?: number;
    offsets?: Partial<Vertices>;
}) => Promise<Vertices>;
export declare function useStateRef<T>(initialValue: T): [RefObject<T>, React.Dispatch<React.SetStateAction<T>>];
//# sourceMappingURL=utils.d.ts.map