import { MetaType, IsValidID, GetNumberOfSlash, ErrorNumberOfForwardSlashIsNotEqual, DocumentReference, CollectionReference, Query, FirestoreAndFirestoreTesting } from './types';
/**
 Gets a FirelordReference instance that refers to the doc, collection, and collectionGroup at the specified absolute path.
 
 @param firestore
 Optional. A reference to the Firestore database. If no value is provided, default Firestore instance is used.
 
 @param path
 A slash-separated full path to a collection.
 
 @returns
 DocumentReference, CollectionReference and CollectionGroupReference instance.
 */
export declare const getFirelord: <T extends MetaType>(firestore?: FirestoreAndFirestoreTesting) => <CollectionPath extends T["collectionPath"] = T["collectionPath"]>(collectionPath: CollectionPath extends never ? CollectionPath : import("./types").GetNumberOfInvalidCharacter<CollectionPath, "/", []> extends import("./types").GetNumberOfInvalidCharacter<T["collectionPath"], "/", []> ? IsValidID<CollectionPath, "Collection", "Path"> : `Error: ${import("./types").GetNumberOfInvalidCharacter<CollectionPath, "/", []> extends infer T_1 ? T_1 extends import("./types").GetNumberOfInvalidCharacter<CollectionPath, "/", []> ? T_1 extends 0 ? "You need to assert your value for documentId() as const, eg: ( 'a/b/c' as const ) or else the forward slash count would be 0" : "Invalid query, forward slash count mismatched" : never : never}, current count is ${import("./types").GetNumberOfInvalidCharacter<CollectionPath, "/", []>}, need ${import("./types").GetNumberOfInvalidCharacter<T["collectionPath"], "/", []>}.`) => Readonly<{
    doc: {
        <DocumentId extends T["docID"]>(documentID: DocumentId extends never ? DocumentId : DocumentId extends IsValidID<DocumentId, "Document", "ID"> ? T["docID"] : IsValidID<DocumentId, "Document", "ID">): DocumentReference<T>;
        <DocumentId_1 extends T["docID"]>(firestore: FirestoreAndFirestoreTesting, documentID: DocumentId_1 extends never ? DocumentId_1 : DocumentId_1 extends IsValidID<DocumentId_1, "Document", "ID"> ? T["docID"] : IsValidID<DocumentId_1, "Document", "ID">): DocumentReference<T>;
    };
    collection: (firestore?: FirestoreAndFirestoreTesting) => CollectionReference<T>;
    collectionGroup: (firestore?: FirestoreAndFirestoreTesting) => Query<T>;
}>;
export declare type FirelordRef<T extends MetaType> = Readonly<{
    doc: {
        <DocumentId extends T['docID']>(documentID: DocumentId extends never ? DocumentId : DocumentId extends IsValidID<DocumentId, 'Document', 'ID'> ? T['docID'] : IsValidID<DocumentId, 'Document', 'ID'>): DocumentReference<T>;
        <DocumentId extends T['docID']>(firestore: FirestoreAndFirestoreTesting, documentID: DocumentId extends never ? DocumentId : DocumentId extends IsValidID<DocumentId, 'Document', 'ID'> ? T['docID'] : IsValidID<DocumentId, 'Document', 'ID'>): DocumentReference<T>;
    };
    collection: (firestore?: FirestoreAndFirestoreTesting) => CollectionReference<T>;
    collectionGroup: (firestore?: FirestoreAndFirestoreTesting) => Query<T>;
}>;
export { Timestamp, GeoPoint, Bytes, getFirestore, terminate, initializeFirestore, loadBundle, clearIndexedDbPersistence, connectFirestoreEmulator, disableNetwork, enableIndexedDbPersistence, enableMultiTabIndexedDbPersistence, enableNetwork, onSnapshotsInSync, namedQuery, waitForPendingWrites, CACHE_SIZE_UNLIMITED, } from 'firebase/firestore';
export * from './batch';
export * from './transaction';
export * from './fieldValue';
export * from './fieldPath';
export * from './onSnapshot';
export * from './operations';
export * from './queryClauses';
export { query } from './refs';
export * from './equal';
export type { MetaType, MetaTypeCreator, ServerTimestamp, DeleteField, PossiblyReadAsUndefined, DocumentReference, CollectionReference, Query, DocumentSnapshot, QuerySnapshot, QueryDocumentSnapshot, } from './types';
