import DS from 'ember-data'; import RSVP from 'rsvp'; import Ember from 'ember'; import FirebaseAppService from '../services/firebase-app'; import ModelRegistry from 'ember-data/types/registries/model'; import { firestore } from 'firebase/app'; declare const FirestoreAdapter_base: Readonly & (new (properties?: object | undefined) => { namespace: string | undefined; firebaseApp: import("@ember/object/computed").default; settings: firestore.Settings; enablePersistence: boolean; persistenceSettings: firestore.PersistenceSettings; firestore: RSVP.Promise | undefined; defaultSerializer: string; } & DS.Adapter) & (new (...args: any[]) => { namespace: string | undefined; firebaseApp: import("@ember/object/computed").default; settings: firestore.Settings; enablePersistence: boolean; persistenceSettings: firestore.PersistenceSettings; firestore: RSVP.Promise | undefined; defaultSerializer: string; } & DS.Adapter); /** * Persist your Ember Data models in Cloud Firestore * * ```js * // app/adapters/application.js * import FirestoreAdapter from 'emberfire/adapters/firestore'; * * export default FirestoreAdapter.extend({ * // configuration goes here * }); * ``` * */ export default class FirestoreAdapter extends FirestoreAdapter_base { /** * Enable offline persistence with Cloud Firestore, it is not enabled by default * * ```js * // app/adapters/application.js * import FirestoreAdapter from 'emberfire/adapters/firestore'; * * export default FirestoreAdapter.extend({ * enablePersistence: true * }); * ``` * */ enablePersistence: boolean; /** * Namespace all of the default collections * * ```js * // app/adapters/application.js * import FirestoreAdapter from 'emberfire/adapters/firestore'; * * export default FirestoreAdapter.extend({ * namespace: 'environments/production' * }); * ``` * */ namespace: string | undefined; /** * Override the default configuration of the Cloud Firestore adapter: `{ timestampsInSnapshots: true }` * * ```js * // app/adapters/application.js * import FirestoreAdapter from 'emberfire/adapters/firestore'; * * export default FirestoreAdapter.extend({ * settings: { timestampsInSnapshots: true } * }); * ``` * */ settings: firestore.Settings; /** * Pass persistence settings to Cloud Firestore, enablePersistence has to be true for these to be used * * ```js * // app/adapters/application.js * import FirestoreAdapter from 'emberfire/adapters/firestore'; * * export default FirestoreAdapter.extend({ * enablePersistence: true, * persistenceSettings: { experimentalTabSynchronization: true } * }); * ``` * */ persistenceSettings: firestore.PersistenceSettings; /** * Override the default FirebaseApp Service used by the FirestoreAdapter: `service('firebase-app')` * * ```js * // app/adapters/application.js * import FirestoreAdapter from 'emberfire/adapters/firestore'; * import { inject as service } from '@ember/service'; * * export default FirestoreAdapter.extend({ * firebaseApp: service('firebase-different-app') * }); * ``` * */ firebaseApp: Ember.ComputedProperty; findRecord(_store: DS.Store, type: ModelRegistry[K], id: string): RSVP.Promise; findAll(store: DS.Store, type: ModelRegistry[K]): RSVP.Promise; findHasMany(store: DS.Store, snapshot: DS.Snapshot, url: string, relationship: { [key: string]: any; }): RSVP.Promise; findBelongsTo(store: DS.Store, snapshot: DS.Snapshot, url: string, relationship: { [key: string]: any; }): RSVP.Promise; query(_store: DS.Store, type: ModelRegistry[K], options?: QueryOptions, _recordArray?: DS.AdapterPopulatedRecordArray): RSVP.Promise; queryRecord(_store: DS.Store, type: ModelRegistry[K], options?: QueryOptions | QueryRecordOptions): RSVP.Promise; shouldBackgroundReloadRecord(): boolean; updateRecord(_store: DS.Store, type: ModelRegistry[K], snapshot: DS.Snapshot): RSVP.Promise; createRecord(_store: DS.Store, type: ModelRegistry[K], snapshot: DS.Snapshot): RSVP.Promise; deleteRecord(_store: DS.Store, type: ModelRegistry[K], snapshot: DS.Snapshot): RSVP.Promise; } export declare type CollectionReferenceOrQuery = firestore.CollectionReference | firestore.Query; export declare type QueryFn = (ref: CollectionReferenceOrQuery) => CollectionReferenceOrQuery; export declare type QueryRecordFn = (ref: firestore.CollectionReference) => firestore.DocumentReference; export declare type WhereOp = [string | firestore.FieldPath, firestore.WhereFilterOp, any]; export declare type OrderOp = string | { [key: string]: "asc" | "desc"; }; export declare type BoundOp = firestore.DocumentSnapshot | any[]; export declare type QueryOptionsOnlyQuery = { query: (ref: firestore.CollectionReference) => firestore.CollectionReference | firestore.Query; }; export declare type QueryOptions = ({ filter?: { [key: string]: any; }; where?: WhereOp | WhereOp[]; endAt?: BoundOp; endBefore?: BoundOp; startAt?: BoundOp; startAfter?: BoundOp; orderBy?: OrderOp; limit?: number; } | QueryOptionsOnlyQuery) & { include?: string; }; export declare type QueryRecordOptions = { doc: QueryRecordFn; include?: string; }; declare module 'ember-data' { interface AdapterRegistry { 'firestore': FirestoreAdapter; } } export {};