import { type Query, type DocumentData, type CollectionReference, type AggregateSpec } from "firebase/firestore";
import { FirestoreState, type FirestoreStateOptions, type PathParam, type QueryParamsFn } from "./FirestoreState.svelte.js";
type CollectionStateOptions<DataDb extends DocumentData, DataApp extends DocumentData> = Omit<FirestoreStateOptions<DataDb, DataApp>, "pathFunctionOrString"> & {
    path: PathParam;
    query?: QueryParamsFn;
    aggregate?: AggregateSpec;
};
export declare class CollectionState<DataDb extends DocumentData, DataApp extends DocumentData = DataDb & {
    id: string;
}, AggregateData = any> extends FirestoreState<DataDb, DataApp, DataApp[]> {
    private readonly queryFunction?;
    private readonly aggregateState?;
    private queryRef;
    private collectionRef;
    constructor({ auth, firestore, query: queryFunction, path: pathFunctionOrString, listen, fromFirestore, toFirestore, aggregate, converter }: CollectionStateOptions<DataDb, DataApp>);
    private get_collection_from_path;
    protected init(): Promise<void>;
    private setup_query_ref;
    private map_data;
    protected fetch_data(): Promise<void>;
    protected listen_data(callback?: (d: DataApp[]) => void): Promise<void>;
    add(data: DataDb | DataApp): Promise<string | void>;
    get aggregateData(): AggregateData | null | undefined;
    delete(id: string): Promise<void>;
    get_doc_ref(id: string): import("firebase/firestore").DocumentReference<DataApp, DataDb>;
    refetch_aggregate_data(): void;
    get_query_ref(): Promise<Query<DataApp, DataDb> | undefined>;
    get_collection_ref(): Promise<CollectionReference<DataApp, DataDb> | undefined>;
}
export {};
