import { Observable } from 'rxjs'; import firebase from 'firebase/compat/app'; export declare type FirebaseOperation = string | firebase.database.Reference | firebase.database.DataSnapshot; export interface AngularFireList { query: DatabaseQuery; valueChanges(events?: ChildEvent[], options?: {}): Observable; valueChanges(events?: ChildEvent[], options?: { idField: K; }): Observable<(T & { [T in K]?: string; })[]>; snapshotChanges(events?: ChildEvent[]): Observable[]>; stateChanges(events?: ChildEvent[]): Observable>; auditTrail(events?: ChildEvent[]): Observable[]>; update(item: FirebaseOperation, data: Partial): Promise; set(item: FirebaseOperation, data: T): Promise; push(data: T): firebase.database.ThenableReference; remove(item?: FirebaseOperation): Promise; } export interface AngularFireObject { query: DatabaseQuery; valueChanges(): Observable; snapshotChanges(): Observable>; update(data: Partial): Promise; set(data: T): Promise; remove(): Promise; } export interface FirebaseOperationCases { stringCase: () => Promise; firebaseCase?: () => Promise; snapshotCase?: () => Promise; unwrappedSnapshotCase?: () => Promise; } export declare type QueryFn = (ref: DatabaseReference) => DatabaseQuery; export declare type ChildEvent = 'child_added' | 'child_removed' | 'child_changed' | 'child_moved'; export declare type ListenEvent = 'value' | ChildEvent; export interface Action { type: ListenEvent; payload: T; } export interface AngularFireAction extends Action { prevKey: string | null | undefined; key: string | null; } export declare type SnapshotAction = AngularFireAction>; export declare type Primitive = number | string | boolean; export interface DatabaseSnapshotExists extends firebase.database.DataSnapshot { exists(): true; val(): T; forEach(action: (a: DatabaseSnapshot) => boolean): boolean; } export interface DatabaseSnapshotDoesNotExist extends firebase.database.DataSnapshot { exists(): false; val(): null; forEach(action: (a: DatabaseSnapshot) => boolean): boolean; } export declare type DatabaseSnapshot = DatabaseSnapshotExists | DatabaseSnapshotDoesNotExist; export declare type DatabaseReference = firebase.database.Reference; export declare type DatabaseQuery = firebase.database.Query; export declare type DataSnapshot = firebase.database.DataSnapshot; export declare type QueryReference = DatabaseReference | DatabaseQuery; export declare type PathReference = QueryReference | string;