diff --git a/src/index.d.ts b/src/index.d.ts index 8efe1ccc..66a4a27a 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -16,46 +16,65 @@ declare module 'react-native-firebase' { nativeModuleExists: boolean; } & S; + // type AdmobModule = FirebaseModuleAndStatics; + type AnalyticsModule = FirebaseModuleAndStatics; + type AuthModule = FirebaseModuleAndStatics< + RNFirebase.auth.Auth, + RNFirebase.auth.AuthStatics + >; + type ConfigModule = FirebaseModuleAndStatics; + type CrashlyticsModule = FirebaseModuleAndStatics< + RNFirebase.crashlytics.Crashlytics + >; + type DatabaseModule = FirebaseModuleAndStatics< + RNFirebase.database.Database, + RNFirebase.database.DatabaseStatics + >; + type FirestoreModule = FirebaseModuleAndStatics< + RNFirebase.firestore.Firestore, + RNFirebase.firestore.FirestoreStatics + >; + type FunctionsModule = FirebaseModuleAndStatics< + RNFirebase.functions.Functions, + RNFirebase.functions.FunctionsStatics + >; + type IidModule = FirebaseModuleAndStatics; + // type InvitesModule = FirebaseModuleAndStatics; + type LinksModule = FirebaseModuleAndStatics< + RNFirebase.links.Links, + RNFirebase.links.LinksStatics + >; + type MessagingModule = FirebaseModuleAndStatics< + RNFirebase.messaging.Messaging, + RNFirebase.messaging.MessagingStatics + >; + type NotificationsModule = FirebaseModuleAndStatics< + RNFirebase.notifications.Notifications, + RNFirebase.notifications.NotificationsStatics + >; + type PerfModule = FirebaseModuleAndStatics; + type StorageModule = FirebaseModuleAndStatics; + // type UtilsModule: FirebaseModuleAndStatics; + // Modules commented-out do not currently have type definitions export class Firebase { private constructor(); - // admob: FirebaseModuleAndStatics; - analytics: FirebaseModuleAndStatics; - auth: FirebaseModuleAndStatics< - RNFirebase.auth.Auth, - RNFirebase.auth.AuthStatics - >; - config: FirebaseModuleAndStatics; - crashlytics: FirebaseModuleAndStatics; - database: FirebaseModuleAndStatics< - RNFirebase.database.Database, - RNFirebase.database.DatabaseStatics - >; - firestore: FirebaseModuleAndStatics< - RNFirebase.firestore.Firestore, - RNFirebase.firestore.FirestoreStatics - >; - functions: FirebaseModuleAndStatics< - RNFirebase.functions.Functions, - RNFirebase.functions.FunctionsStatics - >; - iid: FirebaseModuleAndStatics; - // invites: FirebaseModuleAndStatics - links: FirebaseModuleAndStatics< - RNFirebase.links.Links, - RNFirebase.links.LinksStatics - >; - messaging: FirebaseModuleAndStatics< - RNFirebase.messaging.Messaging, - RNFirebase.messaging.MessagingStatics - >; - notifications: FirebaseModuleAndStatics< - RNFirebase.notifications.Notifications, - RNFirebase.notifications.NotificationsStatics - >; - perf: FirebaseModuleAndStatics; - storage: FirebaseModuleAndStatics; - // utils: FirebaseModuleAndStatics; + // admob: AdmobModule; + analytics: AnalyticsModule; + auth: AuthModule; + config: ConfigModule; + crashlytics: CrashlyticsModule; + database: DatabaseModule; + firestore: FirestoreModule; + functions: FunctionsModule; + iid: IidModule; + // invites: InvitesModule; + links: LinksModule; + messaging: MessagingModule; + notifications: NotificationsModule; + perf: PerfModule; + storage: StorageModule; + // utils: UtilsModule; initializeApp(options: Firebase.Options, name: string): App; app(name?: string): App; readonly apps: App[]; @@ -73,6 +92,19 @@ declare module 'react-native-firebase' { } const firebase: Firebase; export default firebase; + // export const admob: AdmobModule; + export const analytics: AnalyticsModule; + export const auth: AuthModule; + // export const config: ConfigModule; + export const crashlytics: CrashlyticsModule; + export const database: DatabaseModule; + export const firestore: FirestoreModule; + export const iid: IidModule; + // export const invites: InvitesModule; + export const links: LinksModule; + export const messaging: MessagingModule; + export const notifications: NotificationsModule; + export const storage: StorageModule; // Modules commented-out do not currently have type definitions export class App { @@ -100,7 +132,7 @@ declare module 'react-native-firebase' { } export namespace RNFirebase { - interface RnError extends Error { + export interface RnError extends Error { code?: string; } @@ -2367,3 +2399,57 @@ declare module 'react-native-firebase' { } } } + +declare module "react-native-firebase/storage" { + import { RNFirebase } from "react-native-firebase"; + export type StorageTask = RNFirebase.storage.StorageTask; + export type RNStorage = RNFirebase.storage.RNStorage; + export type Storage = RNFirebase.storage.Storage; + export type Reference = RNFirebase.storage.Reference; + export type UploadMetadata = RNFirebase.storage.UploadMetadata; + export type SettableMetadata = RNFirebase.storage.SettableMetadata; + export type StringFormat = RNFirebase.storage.StringFormat; + export type UploadTask = RNFirebase.storage.UploadTask; + export type UploadTaskSnapshot = RNFirebase.storage.UploadTaskSnapshot; + export type FullMetadata = RNFirebase.storage.FullMetadata; + export type TaskEvent = RNFirebase.storage.TaskEvent; + export type TaskState = RNFirebase.storage.TaskState; +} + +declare module "react-native-firebase/database" { + import { RNFirebase } from "react-native-firebase"; + export type Database = RNFirebase.database.Database; + export type RnReference = RNFirebase.database.RnReference; + export type QueryEventType = RNFirebase.database.QueryEventType; + export type QuerySuccessCallback = RNFirebase.database.QuerySuccessCallback; + export type QueryErrorCallback = RNFirebase.database.QueryErrorCallback; + export type Query = RNFirebase.database.Query; + export type DataSnapshot = RNFirebase.database.DataSnapshot; + export type Reference = RNFirebase.database.Reference; + export type DatabaseStatics = RNFirebase.database.DatabaseStatics; + interface ThenableReference extends Promise { + } + + interface ThenableReference extends RNFirebase.database.Reference { + } +} + +declare module "react-native-firebase/auth" { + export { auth } from "react-native-firebase"; +} + +declare module "react-native-firebase/messaging" { + export { messaging } from "react-native-firebase"; +} + +declare module "react-native-firebase/links" { + export { links } from "react-native-firebase"; +} + +declare module "react-native-firebase/firestore" { + export { firestore } from "react-native-firebase"; +} + +declare module "react-native-firebase/int" { + export { DataSnapshot } from "react-native-firebase/database"; +}