import { type Auth, type User } from "firebase/auth";
import { WritableState } from "../WritableState.svelte.js";
import type { Database, Unsubscribe } from "firebase/database";
import type { PathParam } from "../firestore/FirestoreState.svelte.js";
export type RealtimeDatabaseStateOptions = {
    auth?: Auth;
    database: Database;
    listen?: boolean;
    pathFunctionOrString?: PathParam;
};
export declare class RealtimeDatabaseState<Data> {
    protected readonly auth?: Auth;
    protected readonly database: Database;
    protected readonly listen: boolean;
    protected readonly getUserPromise: Promise<User | null>;
    protected readonly pathFunctionOrString?: PathParam;
    protected readonly dataState: WritableState<Data | null | undefined>;
    protected readonly initRefPromise: Promise<void>;
    loading: boolean;
    protected unsub?: Unsubscribe | undefined;
    constructor({ auth, database, listen, pathFunctionOrString }: RealtimeDatabaseStateOptions);
    private start;
    private stop;
    protected get_path_string(): Promise<string | null>;
    protected init_ref(): Promise<void>;
    protected fetch_data(): Promise<Data | null>;
    protected listen_data(): void;
    get data(): Data | null | undefined;
    set data(data: Data | null);
    refetch(): Promise<Data | null>;
}
