import type { App } from 'firebase-admin/app'; import type { ActionCodeSettings, Auth, TenantAwareAuth, UserRecord } from 'firebase-admin/auth'; import type { CollectionReference, DocumentData, DocumentReference, Firestore, Query } from 'firebase-admin/firestore'; import type { Messaging } from 'firebase-admin/messaging'; import type { IDocumentsQueryOptions } from './database/firestore/types'; import type { GenericObject, IGetDocumentsOptions } from '../web/database/firestore/types'; import type { IAuthOptions } from './auth/types'; export interface AdminModule { admin: object, auth: Auth, generateEmailVerificationLink: (email: string, actionCodeSettings?: ActionCodeSettings) => Promise, generatePasswordResetLink: (email: string, actionCodeSettings?: ActionCodeSettings) => Promise, getAuth: (param?: App|IAuthOptions) => Auth|TenantAwareAuth, getCurrentUser: (options: IAuthOptions) => Promise, getSession: () => string, isUserAuthenticated: (session?: string, options?: IAuthOptions) => Promise, revokeSession: (session: string, options: IAuthOptions) => Promise, firestore: Firestore, getFirestore: (app?: App) => Firestore, deleteDocument: (collection: string, document: string) => Promise, deleteDocuments: (collection: string, documents: string[]) => Promise, generateQuery: (collection: string, options?: IDocumentsQueryOptions) => Query, getCollectionRef: (collection: string) => CollectionReference, getDocument: (collection: string, document: string) => Promise, getDocumentBy: (collection: string, options: Omit) => Promise, getDocumentIds: (collection: string) => Promise, getDocumentRef: (collection: string, document: string) => DocumentReference, getDocuments: (collection: string, options?: IDocumentsQueryOptions) => Promise, getDocumentsCount: (collection: string, options?: IDocumentsQueryOptions) => Promise, getFieldSummation: (collection: string, aggregateField: string, options?: IGetDocumentsOptions) => Promise, listCollections: (databaseId?: string) => Promise, setDocument: (collection: string, arg2: string|GenericObject, form?: GenericObject) => Promise, messaging: Messaging, getMessaging: (app?: App) => Messaging, }