import { Mushaf, QuranMetadata, Verse } from '../mushaf';
import { Direction } from './direction';
/**
 * A class responsible for navigating through verses in the Mushaf
 */
export declare class VersesNavigator {
    private mushaf;
    private quranMetadata;
    private currentPageIdx;
    private currentVerseIdx;
    /**
     * Create a new VersesNavigator
     *
     * @param mushaf - The Mushaf to navigate through
     * @param metadata - Metadata about the Quran
     */
    constructor(mushaf: Mushaf, metadata: QuranMetadata);
    /**
     * Reset the navigator to a specific verse position
     *
     * @param suraNumber - Sura number (1-114)
     * @param verseNumber - Verse number within the sura
     * @returns The current verse after reset, or undefined if not found
     */
    resetPosition(suraNumber: number, verseNumber: number): Verse | undefined;
    /**
     * Get the current verse
     *
     * @returns The current verse
     */
    currentVerse(): Verse;
    /**
     * Move to the next verse based on direction
     *
     * @param direction - Direction to navigate
     * @returns The next verse, or undefined if not found
     */
    nextVerse(direction: Direction): Verse | undefined;
    /**
     * Move to the next verse in downward direction
     *
     * @returns The next verse, or undefined if not found
     */
    nextVerseDownward(): Verse | undefined;
    /**
     * Move to the previous sura
     *
     * @param currentSura - Current sura number
     * @returns The first verse of the previous sura, or undefined if not found
     */
    private movePreSura;
    /**
     * Move to the next verse in upward direction
     *
     * @returns The next verse, or undefined if not found
     */
    nextVerseUpward(): Verse | undefined;
    /**
     * Find a verse in the mushaf and return its location (Verse, page, index_of_verse)
     *
     * @param suraNumber - Sura number (1-114)
     * @param verseNumber - Verse number within the sura
     * @returns The verse and its location, or undefined if not found
     */
    findVerse(suraNumber: number, verseNumber: number): [Verse, number, number] | undefined;
    /**
     * Calculate the lines taken by a verse including any sura headers
     *
     * @param verse - The verse to calculate lines for
     * @returns The total number of lines taken by the verse
     */
    calculateVerseLines(verse: Verse): number;
}
