//#region src/ts-utils.d.ts type GrowToSize = A["length"] extends N ? A : GrowToSize; type FixedArray = GrowToSize; type LessThan = TNumber extends TArray["length"] ? TArray[number] : LessThan; //#endregion //#region src/lists/types.d.ts interface RiwayaFullData { HizbEighthList?: AyahId[]; HizbQuarterList: AyahId[]; JuzList: AyahId[]; ManzilList: AyahId[]; PageList: AyahId[]; RukuList: AyahId[]; SajdaList: AyahId[]; SurahList: FixedArray; meta: QuranMeta; } type RiwayasNames = ["Hafs", "Qalun", "Warsh"]; type RiwayaName = RiwayasNames[number]; interface MissingListsPerRiwaya { Hafs: ["HizbEighthList"]; Qalun: []; Warsh: []; } type Riwayas = { [k in RiwayaName]: Omit & { meta: QuranMeta; } }; declare const partNames: readonly ["surah", "juz", "rubAlHizb", "thumunAlHizb", "page", "manzil", "ruku"]; type PartType = (typeof partNames)[number]; //#endregion //#region src/types.d.ts /** * The maximum number of ayahs (verses) that can exist in any surah (chapter) of the Quran. * This maximum occurs in Surah Al-Baqarah (2), which has 286 ayahs. */ declare const maxAyahsInSurah = 286; /** * Total number of surahs (chapters) in the Quran. * This is constant across all riwayas. */ declare const numSurahs = 114; /** * Number of Rub al-Hizbs (quarters) in each Juz. * This is constant across all riwayas. */ declare const numRubsInJuz = 8; /** * Default metadata for the Quran (uses Hafs riwaya as default). * * @remarks * Hafs metadata includes: * - 6236 ayahs (verses) * - 114 surahs (chapters) * - 604 pages * - 30 juzs (parts) * - 60 hizbs (sections) * - 240 rub al-hizbs (quarters) * - 0 thumun al-hizbs (eighths) - not used in Hafs * - 15 sajdas (prostrations) * - 556 rukus * - 7 manzils * * @example * ```typescript * import { meta } from 'quran-meta/hafs' * console.log(meta.numAyahs) // 6236 * ``` */ /** * Riwaya-specific metadata type. * For tree-shakeable imports, use specific entry points: * - 'quran-meta/hafs' for Hafs only * - 'quran-meta/qalun' for Qalun only * - 'quran-meta/warsh' for Warsh only * * @example * ```typescript * import { meta } from 'quran-meta/hafs' // Only Hafs data bundled * import { meta } from 'quran-meta/qalun' // Only Qalun data bundled * ``` */ /** * Represents the complete metadata structure for Quranic information. * Contains counts for all structural divisions of the Quran. * * @remarks * Different riwayas may have different values for these properties. * Most notably, Qalun has 6214 ayahs while Hafs has 6236 ayahs. * * @example * ```typescript * import { meta, riwayaMeta } from 'quran-meta' * * // Hafs metadata (default) * console.log(meta.numAyahs) // 6236 * * // Qalun metadata * console.log(riwayaMeta.Qalun.numAyahs) // 6214 * ``` */ interface QuranMeta { /** Name of the riwaya (recitation tradition) */ riwayaName: RiwayaName; /** Total number of ayahs (verses) in this riwaya */ numAyahs: number; /** Total number of surahs (chapters) - always 114 */ numSurahs: number; /** Total number of pages - typically 604 */ numPages: number; /** Total number of juzs (parts) - always 30 */ numJuzs: number; /** Total number of hizbs (sections) - always 60 */ numHizbs: number; /** Total number of rub al-hizbs (quarters) - always 240 */ numRubAlHizbs: number; /** Total number of thumun al-hizbs (eighths) - 0 for Hafs, 480 for Qalun */ numThumunAlHizbs: number; /** Number of rubs (quarters) in each juz - always 8 */ numRubsInJuz: number; /** Total number of sajdas (prostrations) - varies by riwaya */ numSajdas: number; /** Total number of rukus (sections) - varies by riwaya */ numRukus: number; /** Total number of manzils (7-day reading divisions) - always 7 */ numManzils: number; } /** * Creates a type representing a range of numbers from TStart to TEnd (inclusive). * * @typeParam TStart - The starting number of the range * @typeParam TEnd - The ending number of the range * * * @remarks * This type uses the Exclude utility type along with a LessThan helper type * to generate a union of all numbers within the specified range. */ type NumericRange = Exclude, LessThan>; /** * Represents a valid Surah number in the Quran. * A type that ensures the number is within the valid range of Surahs (1 to 114). */ type Surah = NumericRange<1, typeof numSurahs>; /** * Represents the number of an ayah (verse) within a surah. * Valid values are between 1 and the maximum number of ayahs in any surah. * */ type AyahNo = NumericRange<1, typeof maxAyahsInSurah>; /** * Represents a valid thumun al-Hizb (Eighth of a Hizb) identifier. * The value must be a number between 1 and 480 (maximum across all riwayas). * Uses 1-based indexing where 1 is the first thumun al-hizb. * * @remarks * - Hafs: 0 ThumunAlHizbs (not supported) * - Qalun: 480 ThumunAlHizbs */ type ThumunAlHizbId = NumericRange<1, 480>; /** * Represents a valid Rub al-Hizb (quarter of a Hizb) identifier. * The value must be a number between 1 and 240 (consistent across all riwayas). * Uses 1-based indexing where 1 is the first rub al-hizb. */ type RubAlHizbId = NumericRange<1, 240>; /** * Represents a valid Hizb number in the Quran. * A Hizb is one of 60 equal divisions of the Quran. * Uses 1-based indexing where 1 is the first hizb. */ type HizbId = NumericRange<1, 60>; /** * Represents a numeric identifier for an Ayah (verse) in the Quran. * The value should be between 0 and the total number of Ayahs. */ type AyahId = number; /** * Represents a valid page number within the Quran. * Uses 1-based indexing where 1 is the first page (typically 604 pages total). */ type Page = NumericRange<1, 604>; /** * Represents a Manzil number in the Quran. * A Manzil is one of seven roughly equal parts of the Quran used for sequential reading over seven days. * Uses 1-based indexing where 1 is the first manzil (1-7). */ type Manzil = NumericRange<1, 7>; /** * A type representing a valid Ruku (section) number in the Quran. * Uses 1-based indexing where 1 is the first ruku (typically 556 rukus in Hafs). */ type Ruku = NumericRange<1, 556>; /** * Represents a Juz (part) number in the Quran. * The Quran is traditionally divided into 30 Juzs for ease of recitation and memorization. * Uses 1-based indexing where 1 is the first juz (1-30). */ type Juz = NumericRange<1, 30>; /** * Represents a part (rub') number within a Juz. * A numeric value ranging from 1 to the total number of rub's (quarters) in a Juz. * A number constrained between 1 and the total number of rub's in a Juz */ type JuzPart = NumericRange<1, typeof numRubsInJuz>; type SurahInfo = [startAyahId: AyahId, ayahCount: AyahNo, surahOrder: Surah, rukuCount: Ruku, name: string, isMeccan: boolean]; type SurahListType = FixedArray; type SurahName = [name: string, translitName: string]; interface RangeMeta { firstAyahId: AyahId; lastAyahId: AyahId; first: SurahAyah; last: SurahAyah; } /** * Represents the structure of a Juz and Hizb combination in the Quran */ interface ThumunAlHizb { juz: Juz; juzPart: JuzPart; hizbId: HizbId; rubAlHizbId: RubAlHizbId; thumunAlHizbId: ThumunAlHizbId; } type ThumunAlHizbMeta = ThumunAlHizb & RangeMeta; /** * Represents the structure of a Juz and Hizb combination in the Quran */ interface RubAlHizb { juz: Juz; juzPart: JuzPart; hizbId: HizbId; rubAlHizbId: RubAlHizbId; } type RubAlHizbMeta = RubAlHizb & RangeMeta; type SurahAyah = [Surah, AyahNo]; type AyahRange = [AyahId, AyahId]; type SurahAyahSegment = [Surah, AyahNo | [AyahNo, AyahNo]]; type SurahMeta = { name: string; surahNum: Surah; ayahCount: AyahNo; surahOrder: Surah; rukuCount: Ruku; isMeccan: boolean; } & RangeMeta; type PageMeta = { pageNum: Page; } & RangeMeta; type ManzilMeta = { manzilNum: Manzil; } & RangeMeta; type JuzMeta = { juzNum: Juz; } & RangeMeta; type RukuMeta = { rukuNum: Ruku; } & RangeMeta; type AyahCountBetweenJuzSurah = NumericRange<0, typeof maxAyahsInSurah>; interface SurahJuzMeta { leftjuz: Juz; ayahsBetweenJuzSurah: AyahCountBetweenJuzSurah; rightJuz: Juz; leftAyahId: AyahId; rightAyahId: AyahId; } type RangeMode = "juz" | "surah" | "ayah" | "page" | "ruku" | "all"; interface SurahAyahPos { surah: Surah; ayah: AyahNo; } interface AyahMeta extends SurahAyahPos { juz: Juz; juzPart: JuzPart; hizbId: HizbId; rubAlHizbId: RubAlHizbId; thumunAlHizbId?: ThumunAlHizbId; page: Page; ruku: Ruku; isStartOfQuarter: boolean; isEndOfQuarter: boolean; isSajdahAyah: boolean; isStartOfPage: boolean; isEndOfPage: boolean; isStartOfJuz: boolean; isEndOfJuz: boolean; isStartOfSurah: boolean; isEndOfSurah: boolean; isStartOfRuku: boolean; isEndOfRuku: boolean; } //#endregion //#region src/lists/getList.d.ts /** * Represents a block or section of the Quran with its starting ayah and length * startAyahId - The identifier of the first ayah in the block * ayahCount - The number of ayahs contained in this block */ interface PartBlock { startAyahId: AyahId; ayahCount: AyahId | AyahNo; } //#endregion //#region src/typeGuards.d.ts /** * Checks if the given value is a valid Ayah number. * * @param x - The value to check. * @returns True if the value is a valid Ayah number, otherwise false. */ declare function isValidAyahNo(x: unknown): x is AyahNo; //#endregion //#region src/QuranRiwaya.d.ts /** * QuranRiwaya class provides a clean API for Quran metadata operations * with a specific riwaya (recitation tradition) context. * * Currently provides basic Surah and Ayah operations. For advanced features * like Juz, Page, Manzil, RubAlHizb, etc., use the functional API directly. * * @example * **Basic Usage with Hafs** * ```typescript * import { quran } from 'quran-meta/hafs' * * const surahMeta = quran.getSurahMeta(2) // Get Al-Baqarah metadata * const ayahCount = quran.getAyahCountInSurah(2) // 286 ayahs * const [surah, ayah] = quran.findSurahAyahByAyahId(100) // [2, 93] * ``` * * @example * **Working with Qalun** * ```typescript * import { quran } from 'quran-meta/qalun' * * const meta = quran.meta * console.log(meta.numAyahs) // 6214 (Qalun has fewer ayahs than Hafs) * ``` * * @example * **Creating a custom instance** * ```typescript * import { QuranRiwaya } from 'quran-meta' * import { WarshMeta, WarshLists } from 'quran-meta/lists/WarshLists' * * const warsh = QuranRiwaya.create(WarshLists) * ``` */ declare class QuranRiwaya { #private; private constructor(); /** * Create a QuranRiwaya instance with the specified riwaya, metadata, and lists * @param riwaya - The riwaya name ("Hafs", "Qalun", or "Warsh") * @param meta - The metadata for this riwaya * @param rData - The Lists object for this riwaya */ static create(rData: Riwayas[R]): QuranRiwaya; /** * Gets the metadata for the specified Surah */ getSurahMeta(surahNum: Surah): SurahMeta; ayahStringSplitter(str: string, isStrict?: boolean): SurahAyahSegment; /** * Gets the surah info array [firstAyahId, ayahCount, surahOrder, rukuCount, name, isMeccan] */ getSurahInfo(surah: Surah): SurahInfo; /** * Gets the count of ayahs in a surah */ getAyahCountInSurah(surah: Surah): number; /** * Finds the surah number for a given ayah ID */ findSurahByAyahId(ayahId: AyahId): Surah; /** * Finds the [surah, ayah] tuple for a given ayah ID */ findSurahAyahByAyahId(ayahId: AyahId): SurahAyah; /** * Finds the ayah ID for a given surah and ayah number */ findAyahIdBySurah(surah: Surah, ayah: AyahNo): AyahId; generatePartBlocks

(type: P): PartBlock[] | null; getList

(type: P): number[] | [SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo]; getListNormalised

(type: P): PartBlock[]; /** * Gets the next ayah after the given surah and ayah */ nextAyah(surah: Surah, ayah: AyahNo): SurahAyah; /** * Gets the previous ayah before the given surah and ayah */ prevAyah(surah: Surah, ayah: AyahNo): SurahAyah; /** * Finds the juz number for a given surah and ayah */ findJuz(surah: Surah, ayah?: AyahNo): Juz; /** * Finds the juz number for a given ayah ID */ findJuzByAyahId(ayahId: AyahId): Juz; /** * Finds the page number for a given surah and ayah */ findPage(surah: Surah, ayah?: AyahNo): Page; /** * Finds the page number for a given ayah ID */ findPagebyAyahId(ayahId: AyahId): Page; /** * Gets metadata for a specific page */ getPageMeta(pageNum: Page): PageMeta; /** * Finds the manzil number for a given surah and ayah */ findManzil(surah: Surah, ayah?: AyahNo): Manzil; /** * Finds the manzil number for a given ayah ID */ findManzilByAyahId(ayahId: AyahId): Manzil; /** * Gets metadata for a specific manzil */ getManzilMeta(manzilNum: number): ManzilMeta; /** * Finds the ruku number for a given ayah ID */ findRukuByAyahId(ayahId: AyahId): Ruku; /** * Gets metadata for a specific ruku */ getRukuMeta(rukuNum: number): RukuMeta; /** * Gets metadata for a specific juz */ getJuzMeta(juzNum: Juz): JuzMeta; /** * Finds juz metadata for a given surah and ayah */ findJuzMetaBySurah(surah: Surah, ayah?: AyahNo): SurahJuzMeta; /** * Finds juz and calculates shift between juz start and surah start */ findJuzAndShift(surah: Surah, ayah: AyahNo): { juz: Juz; leftAyahId: AyahId; ayahsBetweenJuzSurah: AyahCountBetweenJuzSurah; }; /** * Finds juz and shift for a given ayah ID */ findJuzAndShiftByAyahId(ayahId: AyahId): { juz: Juz; leftAyahId: AyahId; ayahsBetweenJuzSurah: AyahCountBetweenJuzSurah; }; /** * Finds the RubAlHizb for a given surah and ayah */ findRubAlHizb(surah: Surah, ayah?: AyahNo): RubAlHizbId; /** * Finds the RubAlHizb ID for a given ayah ID */ findRubAlHizbByAyahId(ayahId: AyahId): RubAlHizbId; /** * Gets RubAlHizb data (juz, hizb, etc.) for a given ayah ID */ getRubAlHizbByAyahId(ayahId: AyahId): RubAlHizb; /** * Gets RubAlHizb data (juz, hizb, etc.) for a given ayah ID */ getRubAlHizb(quarterIndex: RubAlHizbId): RubAlHizb; /** * Gets complete RubAlHizb metadata for a given ayah ID */ getRubAlHizbMetaByAyahId(ayahId: AyahId): RubAlHizbMeta; /** * Gets metadata for a specific RubAlHizb */ getRubAlHizbMeta(quarterIndex: RubAlHizbId): RubAlHizbMeta; /** * Finds the ThumunAlHizb ID for a given ayah ID (Qalun/Warsh only) */ findThumunAlHizbByAyahId(ayahId: AyahId): ThumunAlHizbId | null; /** * Finds the ThumunAlHizb ID for a given ayah ID (Qalun/Warsh only) */ findThumunAlHizb(surah: Surah, ayah?: AyahNo): ThumunAlHizbId | null; /** * Gets metadata for a specific ThumunAlHizb (Qalun/Warsh only) */ getThumunAlHizbMeta(eighthIndex: ThumunAlHizbId): ThumunAlHizbMeta | null; getThumunAlHizbByAyahId(ayahId: AyahId): ThumunAlHizb | null; getThumunAlHizbMetaByAyahId(ayahId: AyahId): ThumunAlHizb | null; getThumunAlHizb(eighthIndex: ThumunAlHizbId): ThumunAlHizb | null; /** * Gets comprehensive metadata for a specific ayah */ getAyahMeta(ayahId: AyahId): AyahMeta; /** * Gets metadata for all ayahs in a surah */ getAyahMetasForSurah(surahNumber: Surah): AyahMeta[]; /** * Finds the range of ayahs around a given ayah */ findRangeAroundAyah(ayahId: AyahId, mode: RangeMode): AyahRange; /** * Finds the range of ayahs around a given surah and ayah */ findRangeAroundSurahAyah(surah: Surah, ayah: AyahNo, mode: RangeMode): AyahRange; /** * Checks if an ayah is the first ayah of a juz */ isAyahJuzFirst(ayahId: AyahId): Juz | number; /** * Checks if an ayah is the first ayah of a page */ isAyahPageFirst(ayahId: AyahId): Page | number; /** * Checks if a surah-ayah combination is the first ayah of a juz */ isSurahAyahJuzFirst(surah: Surah, ayah: AyahNo): Juz | number; /** * Checks if a surah-ayah combination is the first ayah of a page */ isSurahAyahPageFirst(surah: Surah, ayah: AyahNo): Page | number; isValidAyahId(x: unknown): x is AyahId; isValidPage(x: unknown): x is Page; isValidSurah(x: unknown): x is Surah; isValidJuz(x: unknown): x is Juz; isValidRuku(x: unknown): x is Ruku; isValidSurahAyah(x: [unknown, unknown]): x is SurahAyah; static isValidAyahNo(x: unknown): x is AyahNo; surahStringParser(str: string, isStrict?: boolean): Page | number; static string2NumberSplitter(str: string): { ayah?: number; ayahTo?: number; surahOrAyah?: number; } | null; /** * Gets the riwaya name */ get riwayaName(): R; /** * Gets the metadata for this riwaya */ get meta(): QuranMeta; /** * Gets the metadata for this riwaya */ get lists(): Riwayas[R]; } //#endregion //#region src/getRubAlHizb.d.ts /** * Retrieves the basic metadata for a specific quarter (rub' al-hizb) of the Quran. * * @param quarterIndex - The index of the quarter (rub' al-hizb) to retrieve metadata for, where 1 is the first quarter. * @param riwaya - The riwaya. Defaults to "Hafs" if not provided. * @returns An object containing the metadata for the specified quarter, including the juz' (part), hizb (section), and the quarter (rub' al-hizb) index. */ declare function getRubAlHizb(quarterIndex: RubAlHizbId): RubAlHizb; //#endregion //#region src/ayahStringSplitter.d.ts /** * Splits a string containing surah and ayah numbers into their numeric components. * * @param str - Input string containing numbers separated by non-digits (e.g., "2:255" or "2 255" or "2-255") * @returns An object containing the parsed numbers, or null if parsing fails * - ayah: The ayah number if present * - ayahTo: The ending ayah number if a range is specified * - surahOrAyah: The surah number * @example * stringNumberSplitter("2:255") // returns \{ ayah: 255, ayahTo: 0, surahOrAyah: 2 \} * stringNumberSplitter("2:255-260") // returns \{ ayah: 255, ayahTo: 260, surahOrAyah: 2 \} * stringNumberSplitter("invalid") // returns null */ declare function string2NumberSplitter(str: string): { ayah?: number; ayahTo?: number; surahOrAyah?: number; } | null; /** * Splits a string in the format "surah:ayah" or "surah:ayah-ayah" into its numeric components. * * @param str - The input string to parse in the format "surah:ayah" or "surah:ayah-ayah" * @returns An object containing the parsed numbers: * - surahOrAyah: The surah number * - ayah: The first or only ayah number * - ayahTo: The ending ayah number (if range specified) * @throws {@link Error} When the input string format is invalid or contains non-numeric values * * @example * string2NumberSplitterStrict("2:255") // returns \{ surahOrAyah: 2, ayah: 255, ayahTo: NaN \} * string2NumberSplitterStrict("2:255-260") // returns \{ surahOrAyah: 2, ayah: 255, ayahTo: 260 \} */ declare function string2NumberSplitterStrict(str: string): { ayah?: number; ayahTo?: number; surahOrAyah?: number; } | null; //#endregion //#region src/hafs.d.ts /** * Hafs metadata */ declare const meta: QuranMeta; declare const getList: (listName: PartType) => number[] | [SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo]; declare const getListNormalised: (listName: PartType) => PartBlock[]; /** * Hafs Lists (SurahList, JuzList, etc.) */ declare const HizbQuarterList: number[]; declare const JuzList: number[]; declare const ManzilList: number[]; declare const PageList: number[]; declare const SurahList: [SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo, SurahInfo]; declare const RukuList: number[]; declare const SajdaList: number[]; declare const ayahStringSplitter: (str: string, isStrict?: boolean) => SurahAyahSegment; declare const surahStringParser: (str: string, isStrict?: boolean) => Surah; declare const checkValidSurahAyah: (surah: Surah | number | unknown, ayah: number | AyahNo | unknown) => void; declare const checkValidSurah: (surah: Surah | number | unknown) => void; declare const checkValidSurahAyahPair: (pair: [unknown, unknown]) => void; declare const checkValidAyahId: (ayahId: unknown) => void; declare const checkValidPage: (page: unknown) => void; declare const checkValidJuz: (juz: unknown) => void; declare const checkValidRuku: (ruku: unknown) => void; declare const checkValidManzil: (manzil: unknown) => void; declare const getSurahMeta: (surah: Surah) => SurahMeta; declare const getSurahInfo: (surah: Surah) => SurahInfo; declare const getAyahCountInSurah: (surah: Surah) => AyahNo; declare const findAyahIdBySurah: (surah: Surah, ayah?: AyahNo) => number; declare const findSurahByAyahId: (ayahId: AyahId) => Surah; declare const findSurahAyahByAyahId: (ayahId: AyahId) => SurahAyah; declare const nextAyah: (surah: Surah, ayah: AyahNo) => SurahAyah; declare const prevAyah: (surah: Surah, ayah: AyahNo) => SurahAyah; declare const findJuz: (surah: Surah, ayah?: AyahNo) => Juz; declare const findJuzByAyahId: (ayahId: AyahId) => Juz; declare const getJuzMeta: (juz: Juz) => JuzMeta; declare const findJuzMetaBySurah: (surah: Surah, ayah?: AyahNo) => SurahJuzMeta; declare const findJuzAndShift: (surah: Surah, ayah?: AyahNo) => { juz: Juz; leftAyahId: AyahId; ayahsBetweenJuzSurah: AyahCountBetweenJuzSurah; }; declare const findJuzAndShiftByAyahId: (ayahId: AyahId) => { juz: Juz; leftAyahId: AyahId; ayahsBetweenJuzSurah: AyahCountBetweenJuzSurah; }; declare const findPage: (surah: Surah, ayah?: AyahNo) => Page; declare const findPagebyAyahId: (ayahId: AyahId) => Page; declare const getPageMeta: (page: Page) => PageMeta; declare const findManzil: (surah: Surah, ayah?: AyahNo) => Manzil; declare const findManzilByAyahId: (ayahId: AyahId) => Manzil; declare const getManzilMeta: (manzil: Manzil) => ManzilMeta; declare const findRukuByAyahId: (ayahId: AyahId) => Ruku; declare const getRukuMeta: (ruku: Ruku) => RukuMeta; declare const findRubAlHizb: (surah: Surah, ayah?: AyahNo) => RubAlHizbId; declare const findRubAlHizbByAyahId: (ayahId: AyahId) => RubAlHizbId; declare const getRubAlHizbMeta: (quarterIndex: RubAlHizbId) => RubAlHizbMeta; declare const getRubAlHizbMetaByAyahId: (ayahId: AyahId) => RubAlHizbMeta; declare const getRubAlHizbByAyahId: (ayahId: AyahId) => RubAlHizb; declare const getAyahMeta: (ayahId: AyahId) => AyahMeta; declare const getAyahMetasForSurah: (surah: Surah) => AyahMeta[]; declare const findRangeAroundAyah: (ayahId: AyahId, mode: RangeMode) => AyahRange; declare const findRangeAroundSurahAyah: (surah: Surah, ayah: AyahNo, mode: RangeMode) => AyahRange; declare const isAyahJuzFirst: (ayahId: AyahId) => number; declare const isAyahPageFirst: (ayahId: AyahId) => number; declare const isSurahAyahJuzFirst: (surah: Surah, ayah: AyahNo) => number; declare const isSurahAyahPageFirst: (surah: Surah, ayah: AyahNo) => number; declare const isValidSurah: (x: unknown) => x is Surah; declare const isValidAyahId: (x: unknown) => x is number; declare const isValidPage: (x: unknown) => x is Juz; declare const isValidJuz: (x: unknown) => x is Juz; declare const isValidManzil: (x: unknown) => x is Manzil; declare const isValidRuku: (x: unknown) => x is Ruku; declare const isValidSurahAyah: (x: [unknown, unknown]) => x is SurahAyah; declare const generatePartBlocks: (part: PartType) => PartBlock[] | null; /** * Pre-initialized QuranRiwaya instance for Hafs * * @example * ```typescript * import { quran } from 'quran-meta/hafs' * * const ayahMeta = quran.getAyahMeta(1) * const juz = quran.findJuz(1, 1) * ``` */ declare const createHafs: () => QuranRiwaya<"Hafs" | "Qalun" | "Warsh">; //#endregion export { AyahCountBetweenJuzSurah, AyahId, AyahMeta, AyahNo, AyahRange, HizbId, HizbQuarterList, Juz, JuzList, JuzMeta, JuzPart, Manzil, ManzilList, ManzilMeta, NumericRange, Page, PageList, PageMeta, type PartType, QuranMeta, RangeMeta, RangeMode, RubAlHizb, RubAlHizbId, RubAlHizbMeta, Ruku, RukuList, RukuMeta, SajdaList, Surah, SurahAyah, SurahAyahPos, SurahAyahSegment, SurahInfo, SurahJuzMeta, SurahList, SurahListType, SurahMeta, SurahName, ThumunAlHizb, ThumunAlHizbId, ThumunAlHizbMeta, ayahStringSplitter, checkValidAyahId, checkValidJuz, checkValidManzil, checkValidPage, checkValidRuku, checkValidSurah, checkValidSurahAyah, checkValidSurahAyahPair, createHafs, findAyahIdBySurah, findJuz, findJuzAndShift, findJuzAndShiftByAyahId, findJuzByAyahId, findJuzMetaBySurah, findManzil, findManzilByAyahId, findPage, findPagebyAyahId, findRangeAroundAyah, findRangeAroundSurahAyah, findRubAlHizb, findRubAlHizbByAyahId, findRukuByAyahId, findSurahAyahByAyahId, findSurahByAyahId, generatePartBlocks, getAyahCountInSurah, getAyahMeta, getAyahMetasForSurah, getJuzMeta, getList, getListNormalised, getManzilMeta, getPageMeta, getRubAlHizb, getRubAlHizbByAyahId, getRubAlHizbMeta, getRubAlHizbMetaByAyahId, getRukuMeta, getSurahInfo, getSurahMeta, isAyahJuzFirst, isAyahPageFirst, isSurahAyahJuzFirst, isSurahAyahPageFirst, isValidAyahId, isValidAyahNo, isValidJuz, isValidManzil, isValidPage, isValidRuku, isValidSurah, isValidSurahAyah, maxAyahsInSurah, meta, nextAyah, numRubsInJuz, numSurahs, prevAyah, string2NumberSplitter, string2NumberSplitterStrict, surahStringParser };