//#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; } }; type RiwayaData = Riwayas[RiwayaName]; 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/qalun.d.ts /** * Qalun metadata */ declare const riwayaLists: RiwayaData; 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[]; declare const meta: QuranMeta; /** * Qalun 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 findThumunAlHizb: (surah: Surah, ayah?: AyahNo) => ThumunAlHizbId; declare const findThumunAlHizbByAyahId: (ayahId: AyahId) => ThumunAlHizbId; declare const getThumunAlHizb: (quarterIndex: ThumunAlHizbId) => ThumunAlHizb; declare const getThumunAlHizbByAyahId: (ayahId: AyahId) => ThumunAlHizb; declare const getThumunAlHizbMeta: (quarterIndex: ThumunAlHizbId) => ThumunAlHizbMeta; declare const getThumunAlHizbMetaByAyahId: (ayahId: AyahId) => ThumunAlHizbMeta; 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 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 Qalun * * @example * ```typescript * import { quran } from 'quran-meta/qalun' * * const ayahMeta = quran.getAyahMeta(1) * const juz = quran.findJuz(1, 1) * ``` */ declare const createQalun: () => QuranRiwaya<"Hafs" | "Qalun" | "Warsh">; //#endregion export { AyahCountBetweenJuzSurah, AyahId, AyahMeta, AyahNo, AyahRange, HizbId, HizbQuarterList, Juz, JuzList, JuzMeta, JuzPart, Manzil, ManzilList, ManzilMeta, NumericRange, Page, PageList, PageMeta, 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, createQalun, findAyahIdBySurah, findJuz, findJuzAndShift, findJuzAndShiftByAyahId, findJuzByAyahId, findJuzMetaBySurah, findManzil, findManzilByAyahId, findPage, findPagebyAyahId, findRangeAroundAyah, findRangeAroundSurahAyah, findRubAlHizb, findRubAlHizbByAyahId, findRukuByAyahId, findSurahAyahByAyahId, findSurahByAyahId, findThumunAlHizb, findThumunAlHizbByAyahId, generatePartBlocks, getAyahCountInSurah, getAyahMeta, getAyahMetasForSurah, getJuzMeta, getList, getListNormalised, getManzilMeta, getPageMeta, getRubAlHizb, getRubAlHizbByAyahId, getRubAlHizbMeta, getRubAlHizbMetaByAyahId, getRukuMeta, getSurahInfo, getSurahMeta, getThumunAlHizb, getThumunAlHizbByAyahId, getThumunAlHizbMeta, getThumunAlHizbMetaByAyahId, isAyahJuzFirst, isAyahPageFirst, isSurahAyahJuzFirst, isSurahAyahPageFirst, isValidAyahId, isValidAyahNo, isValidJuz, isValidPage, isValidRuku, isValidSurah, isValidSurahAyah, maxAyahsInSurah, meta, nextAyah, numRubsInJuz, numSurahs, prevAyah, riwayaLists, string2NumberSplitter, string2NumberSplitterStrict, surahStringParser };