import { Observable } from 'rxjs';
import { NgZone } from '@angular/core';
import type { ApolloQueryResult, FetchMoreQueryOptions, MaybeMasked, ObservableQuery, OperationVariables, SubscribeToMoreOptions, TypedDocumentNode, Unmasked } from '@apollo/client/core';
import { EmptyObject, WatchQueryOptions } from './types';
export type QueryRefFromDocument<T extends TypedDocumentNode> = T extends TypedDocumentNode<infer R, infer V> ? QueryRef<R, V & OperationVariables> : never;
export declare class QueryRef<TData, TVariables extends OperationVariables = EmptyObject> {
    private readonly obsQuery;
    readonly valueChanges: Observable<ApolloQueryResult<TData>>;
    readonly queryId: ObservableQuery<TData, TVariables>['queryId'];
    constructor(obsQuery: ObservableQuery<TData, TVariables>, ngZone: NgZone, options: WatchQueryOptions<TVariables, TData>);
    get options(): ObservableQuery<TData, TVariables>['options'];
    get variables(): ObservableQuery<TData, TVariables>['variables'];
    result(): ReturnType<ObservableQuery<TData, TVariables>['result']>;
    getCurrentResult(): ReturnType<ObservableQuery<TData, TVariables>['getCurrentResult']>;
    getLastResult(): ReturnType<ObservableQuery<TData, TVariables>['getLastResult']>;
    getLastError(): ReturnType<ObservableQuery<TData, TVariables>['getLastError']>;
    resetLastResults(): ReturnType<ObservableQuery<TData, TVariables>['resetLastResults']>;
    refetch(variables?: Parameters<ObservableQuery<TData, TVariables>['refetch']>[0]): ReturnType<ObservableQuery<TData, TVariables>['refetch']>;
    fetchMore<TFetchData = TData, TFetchVars extends OperationVariables = TVariables>(fetchMoreOptions: FetchMoreQueryOptions<TFetchVars, TFetchData> & {
        updateQuery?: (previousQueryResult: Unmasked<TData>, options: {
            fetchMoreResult: Unmasked<TFetchData>;
            variables: TFetchVars;
        }) => Unmasked<TData>;
    }): Promise<ApolloQueryResult<MaybeMasked<TFetchData>>>;
    subscribeToMore<TSubscriptionData = TData, TSubscriptionVariables extends OperationVariables = TVariables>(options: 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']>;
    setOptions(opts: Parameters<ObservableQuery<TData, TVariables>['setOptions']>[0]): ReturnType<ObservableQuery<TData, TVariables>['setOptions']>;
    setVariables(variables: Parameters<ObservableQuery<TData, TVariables>['setVariables']>[0]): ReturnType<ObservableQuery<TData, TVariables>['setVariables']>;
}
