import { type DocumentData, type DocumentReference } from "firebase/firestore";
import { FirestoreState, type FirestoreStateOptions, type PathParam, type QueryParamsFn } from "./FirestoreState.svelte.js";
type DocumentStateOptions<DataDb extends DocumentData, DataApp extends DocumentData> = Omit<FirestoreStateOptions<DataDb, DataApp>, "pathFunctionOrString"> & ({
    path?: never;
    collectionPath?: PathParam;
    query?: QueryParamsFn;
} | {
    path?: PathParam;
    collectionPath?: never;
    query?: never;
});
export declare class DocumentState<DataDb extends DocumentData, DataApp extends DataDb & {
    id: string;
} = DataDb & {
    id: string;
}> extends FirestoreState<DataDb, DataApp, DataApp> {
    private readonly collectionPathFunctionOrString?;
    private readonly queryParams?;
    private docRef;
    private queryRef;
    constructor({ auth, firestore, path: pathFunctionOrString, collectionPath: collectionPathFunctionOrString, query: queryParams, listen, fromFirestore, toFirestore, converter }: DocumentStateOptions<DataDb, DataApp>);
    protected init(): Promise<DocumentReference | undefined | null>;
    protected fetch_data(): Promise<void>;
    protected listen_data(): Promise<void>;
    private listen_to_query;
    private listen_to_doc;
    private save_data_to_firebase;
    get_doc_ref(): Promise<DocumentReference | undefined | null>;
    save<K extends keyof DataApp>(key?: K, update?: DataApp[K] | ((prevValue: DataApp[K]) => DataApp[K])): void;
}
export {};
