import { Vector2 } from "@osbjs/tiny-osbjs";
type Circle = {
    position: Vector2;
    time: number;
};
type Slider = {
    startTime: number;
    endTime: number;
    positionAtTime: (time: number) => Vector2;
};
type HitObjects = {
    sliders: Slider[];
    circles: Circle[];
};
/**
 * Get all beatmap hitobjects.
 * @param filepath Full path to osu file.
 */
declare function loadBeatmapHitobjects(filepath: string): HitObjects;
/**
 * Find the first circle with a specific timestamp.
 * @param time Time in millisecond
 * @param circles Array of circles
 * @param maxAcceptableOffset Accept result in range [time - maxAcceptableOffset, time + maxAcceptableOffset]
 */
declare function findCircleAtTime(time: number, circles: Circle[], maxAcceptableOffset?: number): Circle | undefined;
/**
 * Find the first slider with a specific timestamp.
 * @param time Time in millisecond
 * @param sliders Array of sliders
 * @param maxAcceptableOffset Accept result in range [time - maxAcceptableOffset, time + maxAcceptableOffset]
 */
declare function findSliderAtTime(time: number, sliders: Slider[], maxAcceptableOffset?: number): Slider | undefined;
/**
 * Returns hitobjects in a specific period.
 * @param startTime Start time in millisecond
 * @param endTime End time in millisecond
 * @param hitobjects Array of hit objects
 * @param maxAcceptableOffset Accept result in range [startTime - maxAcceptableOffset, endTime + maxAcceptableOffset]
 */
declare function filterHitObjectsInPeriod(startTime: number, endTime: number, hitobjects: HitObjects, maxAcceptableOffset?: number): HitObjects;
export { loadBeatmapHitobjects, findCircleAtTime, findSliderAtTime, filterHitObjectsInPeriod };
