import * as firebase from 'firebase/app'; import { Observable } from 'rxjs/Observable'; export interface FirebaseOperationCases { stringCase: () => firebase.Promise; firebaseCase?: () => firebase.Promise; snapshotCase?: () => firebase.Promise; unwrappedSnapshotCase?: () => firebase.Promise; } export interface AFUnwrappedDataSnapshot { $key: string; $value?: string | number | boolean; $exists: () => boolean; } export interface Query { [key: string]: any; orderByKey?: boolean | Observable; orderByPriority?: boolean | Observable; orderByChild?: string | Observable; orderByValue?: boolean | Observable; equalTo?: any | Observable; startAt?: any | Observable; endAt?: any | Observable; limitToFirst?: number | Observable; limitToLast?: number | Observable; } export interface ScalarQuery { [key: string]: any; orderByKey?: boolean; orderByPriority?: boolean; orderByChild?: string; orderByValue?: boolean; equalTo?: any; startAt?: any; endAt?: any; limitToFirst?: number; limitToLast?: number; } export interface OrderBySelection { key: OrderByOptions; value: boolean | string; } export interface LimitToSelection { key: LimitToOptions; value: number; } export interface FirebaseListFactoryOpts { preserveSnapshot?: boolean; query?: Query; } export interface FirebaseObjectFactoryOpts { preserveSnapshot?: boolean; } export declare enum OrderByOptions { Child = 0, Key = 1, Value = 2, Priority = 3, } export declare enum LimitToOptions { First = 0, Last = 1, } export declare enum QueryOptions { EqualTo = 0, StartAt = 1, EndAt = 2, } export declare type Primitive = number | string | boolean; export declare type DatabaseSnapshot = firebase.database.DataSnapshot; export declare type DatabaseReference = firebase.database.Reference; export declare type DatabaseQuery = firebase.database.Query; export declare type QueryReference = DatabaseReference | DatabaseQuery; export declare type PathReference = QueryReference | string;