import * as m3o from "@m3o/m3o-node"; export class QuranService { private client: m3o.Client; constructor(token: string) { this.client = new m3o.Client({ token: token }); } // List the Chapters (surahs) of the Quran chapters(request: ChaptersRequest): Promise { return this.client.call( "quran", "Chapters", request ) as Promise; } // Search the Quran for any form of query or questions search(request: SearchRequest): Promise { return this.client.call( "quran", "Search", request ) as Promise; } // Get a summary for a given chapter (surah) summary(request: SummaryRequest): Promise { return this.client.call( "quran", "Summary", request ) as Promise; } // Lookup the verses (ayahs) for a chapter including // translation, interpretation and breakdown by individual // words. verses(request: VersesRequest): Promise { return this.client.call( "quran", "Verses", request ) as Promise; } } export interface Chapter { // The arabic name of the chapter arabicName?: string; // The complex name of the chapter complexName?: string; // The id of the chapter as a number e.g 1 id?: number; // The simple name of the chapter name?: string; // The pages from and to e.g 1, 1 pages?: number[]; // Should the chapter start with bismillah prefixBismillah?: boolean; // The order in which it was revealed revelationOrder?: number; // The place of revelation revelationPlace?: string; // The translated name translatedName?: string; // The number of verses in the chapter verses?: number; } export interface ChaptersRequest { // Specify the language e.g en language?: string; } export interface ChaptersResponse { chapters?: Chapter[]; } export interface Interpretation { // The unique id of the interpretation id?: number; // The source of the interpretation source?: string; // The translated text text?: string; } export interface Result { // The associated arabic text text?: string; // The related translations to the text translations?: Translation[]; // The unique verse id across the Quran verseId?: number; // The verse key e.g 1:1 verseKey?: string; } export interface SearchRequest { // The language for translation language?: string; // The number of results to return limit?: number; // The pagination number page?: number; // The query to ask query?: string; } export interface SearchResponse { // The current page page?: number; // The question asked query?: string; // The results for the query results?: Result[]; // The total pages totalPages?: number; // The total results returned totalResults?: number; } export interface SummaryRequest { // The chapter id e.g 1 chapter?: number; // Specify the language e.g en language?: string; } export interface SummaryResponse { // The chapter id chapter?: number; // The source of the summary source?: string; // The short summary for the chapter summary?: string; // The full description for the chapter text?: string; } export interface Translation { // The unique id of the translation id?: number; // The source of the translation source?: string; // The translated text text?: string; } export interface Verse { // The unique id of the verse in the whole book id?: number; // The interpretations of the verse interpretations?: Interpretation[]; // The key of this verse (chapter:verse) e.g 1:1 key?: string; // The verse number in this chapter number?: number; // The page of the Quran this verse is on page?: number; // The arabic text for this verse text?: string; // The basic translation of the verse translatedText?: string; // The alternative translations for the verse translations?: Translation[]; // The phonetic transliteration from arabic transliteration?: string; // The individual words within the verse (Ayah) words?: Word[]; } export interface VersesRequest { // The chapter id to retrieve chapter?: number; // Return the interpretation (tafsir) interpret?: boolean; // The language of translation language?: string; // The verses per page limit?: number; // The page number to request page?: number; // Return alternate translations translate?: boolean; // Return the individual words with the verses words?: boolean; } export interface VersesResponse { // The chapter requested chapter?: number; // The page requested page?: number; // The total pages totalPages?: number; // The verses on the page verses?: Verse[]; } export interface Word { // The character type e.g word, end charType?: string; // The QCF v2 font code code?: string; // The id of the word within the verse id?: number; // The line number line?: number; // The page number page?: number; // The position of the word position?: number; // The arabic text for this word text?: string; // The translated text translation?: string; // The transliteration text transliteration?: string; }