import { AnyRecord, Query, QueryDate } from "@baqhub/sdk";
type RefreshMode = "sync" | "full";
export interface QueryRefreshSpec {
    mode: RefreshMode;
    interval: number;
}
export interface StoreQuery<T extends AnyRecord, Q extends T> {
    id: number;
    query: Query<Q>;
    promise: Promise<void> | undefined;
    error: unknown | undefined;
    refreshSpec: QueryRefreshSpec | undefined;
    refreshCount: number;
    refreshBoundary: QueryDate | undefined;
    refresh: (refreshCount: number) => void;
    loadMorePromise: Promise<void> | undefined;
    loadMoreError: unknown | undefined;
    loadMoreQuery: string | undefined;
    loadMore: (() => void) | undefined;
    isSync: boolean;
    isComplete: boolean;
    isDisplayed: boolean;
    loadedBoundary: QueryDate | undefined;
    recordVersions: ReadonlyArray<string> | undefined;
}
export type LiveQueryMode = "local" | "local-tracked" | "fetch" | "sync";
export interface UseRecordsQueryOptions {
    mode?: LiveQueryMode;
    loadMorePageSize?: number;
}
export interface UseRecordQueryOptions {
    mode?: LiveQueryMode;
}
interface NoRefreshUseStaticRecordsQueryOptions {
    refreshMode?: "none";
    refreshIntervalSeconds?: never;
    loadMorePageSize?: number;
}
interface SyncRefreshUseStaticRecordsQueryOptions {
    refreshMode: "sync";
    refreshIntervalSeconds: number;
    loadMorePageSize?: number;
}
interface FullRefreshUseStaticRecordsQueryOptions {
    refreshMode: "full";
    refreshIntervalSeconds: number;
    loadMorePageSize?: never;
}
export type UseStaticRecordsQueryOptions = NoRefreshUseStaticRecordsQueryOptions | SyncRefreshUseStaticRecordsQueryOptions | FullRefreshUseStaticRecordsQueryOptions;
export interface UseStaticRecordQueryOptions {
    refreshIntervalSeconds?: number;
}
export declare function staticRecordQueryOptionsToRefreshSpec(options: UseStaticRecordsQueryOptions): QueryRefreshSpec | undefined;
export {};
