import { Observable } from 'rxjs';
import { NgZone } from '@angular/core';
import type { ApolloClient, MaybeMasked, ObservableQuery, OperationVariables, TypedDocumentNode } from '@apollo/client';
import { EmptyObject } from './types';
export type QueryRefFromDocument<T extends TypedDocumentNode> = T extends TypedDocumentNode<infer TData, infer TVariables> ? QueryRef<TData, TVariables & OperationVariables> : never;
export declare class QueryRef<TData, TVariables extends OperationVariables = EmptyObject> {
    private readonly obsQuery;
    readonly valueChanges: Observable<ObservableQuery.Result<TData>>;
    constructor(obsQuery: ObservableQuery<TData, TVariables>, ngZone: NgZone);
    get options(): ObservableQuery<TData, TVariables>['options'];
    get variables(): ObservableQuery<TData, TVariables>['variables'];
    getCurrentResult(): ReturnType<ObservableQuery<TData, TVariables>['getCurrentResult']>;
    refetch(variables?: Parameters<ObservableQuery<TData, TVariables>['refetch']>[0]): ReturnType<ObservableQuery<TData, TVariables>['refetch']>;
    fetchMore<TFetchData = TData, TFetchVars extends OperationVariables = TVariables>(fetchMoreOptions: ObservableQuery.FetchMoreOptions<TData, TVariables, TFetchData, TFetchVars>): Promise<ApolloClient.QueryResult<MaybeMasked<TFetchData>>>;
    subscribeToMore<TSubscriptionData = TData, TSubscriptionVariables extends OperationVariables = TVariables>(options: ObservableQuery.SubscribeToMoreOptions<TData, TSubscriptionVariables, TSubscriptionData, TVariables>): ReturnType<ObservableQuery<TData, TVariables>['subscribeToMore']>;
    updateQuery(mapFn: Parameters<ObservableQuery<TData, TVariables>['updateQuery']>[0]): ReturnType<ObservableQuery<TData, TVariables>['updateQuery']>;
    stopPolling(): ReturnType<ObservableQuery<TData, TVariables>['stopPolling']>;
    startPolling(pollInterval: Parameters<ObservableQuery<TData, TVariables>['startPolling']>[0]): ReturnType<ObservableQuery<TData, TVariables>['startPolling']>;
    setVariables(variables: Parameters<ObservableQuery<TData, TVariables>['setVariables']>[0]): ReturnType<ObservableQuery<TData, TVariables>['setVariables']>;
    reobserve(options: ObservableQuery.Options<TData, TVariables>): ReturnType<ObservableQuery<TData, TVariables>['reobserve']>;
}
