///
///
import { NetworkInterface, createNetworkInterface, addQueryMerging } from './networkInterface';
import { Document, FragmentDefinition } from 'graphql';
import { print } from 'graphql-tag/printer';
import { createApolloStore, ApolloStore, createApolloReducer, ApolloReducerConfig, Store } from './store';
import { QueryManager, SubscriptionOptions, ResultComparator, ResultTransformer } from './QueryManager';
import { ObservableQuery } from './ObservableQuery';
import { Observable, Subscription } from './util/Observable';
import { WatchQueryOptions } from './watchQueryOptions';
import { readQueryFromStore, readFragmentFromStore } from './data/readFromStore';
import { writeQueryToStore, writeFragmentToStore } from './data/writeToStore';
import { IdGetter } from './data/extensions';
import { QueryTransformer, addTypenameToSelectionSet } from './queries/queryTransform';
import { MutationBehavior, MutationBehaviorReducerMap, MutationQueryReducersMap } from './data/mutationResults';
import { createFragmentMap } from './queries/getFromAST';
import { ApolloError } from './errors';
export { createNetworkInterface, addQueryMerging, createApolloStore, createApolloReducer, readQueryFromStore, readFragmentFromStore, addTypenameToSelectionSet as addTypename, writeQueryToStore, writeFragmentToStore, print as printAST, createFragmentMap, ApolloError, WatchQueryOptions, ObservableQuery, MutationBehavior, MutationQueryReducersMap, Subscription, ApolloStore };
export declare type ApolloQueryResult = {
data: any;
loading: boolean;
};
export declare type ApolloStateSelector = (state: any) => Store;
export declare let fragmentDefinitionsMap: {
[fragmentName: string]: FragmentDefinition[];
};
export declare function createFragment(doc: Document, fragments?: (FragmentDefinition[] | FragmentDefinition[][])): FragmentDefinition[];
export declare function disableFragmentWarnings(): void;
export declare function enableFragmentWarnings(): void;
export declare function clearFragmentDefinitions(): void;
export default class ApolloClient {
networkInterface: NetworkInterface;
store: ApolloStore;
reduxRootKey: string;
reduxRootSelector: ApolloStateSelector | null;
initialState: any;
queryManager: QueryManager;
reducerConfig: ApolloReducerConfig;
queryTransformer: QueryTransformer;
resultTransformer: ResultTransformer;
resultComparator: ResultComparator;
shouldBatch: boolean;
shouldForceFetch: boolean;
dataId: IdGetter;
fieldWithArgs: (fieldName: string, args?: Object) => string;
batchInterval: number;
constructor({networkInterface, reduxRootKey, reduxRootSelector, initialState, dataIdFromObject, queryTransformer, resultTransformer, resultComparator, shouldBatch, ssrMode, ssrForceFetchDelay, mutationBehaviorReducers, batchInterval}?: {
networkInterface?: NetworkInterface;
reduxRootKey?: string;
reduxRootSelector?: string | ApolloStateSelector;
initialState?: any;
dataIdFromObject?: IdGetter;
queryTransformer?: QueryTransformer;
resultTransformer?: ResultTransformer;
resultComparator?: ResultComparator;
shouldBatch?: boolean;
ssrMode?: boolean;
ssrForceFetchDelay?: number;
mutationBehaviorReducers?: MutationBehaviorReducerMap;
batchInterval?: number;
});
watchQuery(options: WatchQueryOptions): ObservableQuery;
query(options: WatchQueryOptions): Promise;
mutate(options: {
mutation: Document;
variables?: Object;
resultBehaviors?: MutationBehavior[];
fragments?: FragmentDefinition[];
optimisticResponse?: Object;
updateQueries?: MutationQueryReducersMap;
refetchQueries?: string[];
}): Promise;
subscribe(options: SubscriptionOptions): Observable;
reducer(): Function;
middleware: () => (store: ApolloStore) => (next: any) => (action: any) => any;
initStore(): void;
resetStore(): void;
private setStore(store);
}