import { NetworkInterface, createNetworkInterface, addQueryMerging } from './networkInterface'; import { Document, FragmentDefinition } from 'graphql'; import { print } from 'graphql-tag/printer'; import { createApolloStore, ApolloStore, createApolloReducer, ApolloReducerConfig } from './store'; import { QueryManager, SubscriptionOptions } from './QueryManager'; import { ObservableQuery } from './ObservableQuery'; import { Observable } 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'; export { createNetworkInterface, addQueryMerging, createApolloStore, createApolloReducer, readQueryFromStore, readFragmentFromStore, addTypenameToSelectionSet as addTypename, writeQueryToStore, writeFragmentToStore, print as printAST }; export declare type ApolloQueryResult = { data: any; loading: boolean; }; 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; initialState: any; queryManager: QueryManager; reducerConfig: ApolloReducerConfig; queryTransformer: QueryTransformer; shouldBatch: boolean; shouldForceFetch: boolean; dataId: IdGetter; fieldWithArgs: (fieldName: string, args?: Object) => string; batchInterval: number; constructor({networkInterface, reduxRootKey, initialState, dataIdFromObject, queryTransformer, shouldBatch, ssrMode, ssrForceFetchDelay, mutationBehaviorReducers, batchInterval}?: { networkInterface?: NetworkInterface; reduxRootKey?: string; initialState?: any; dataIdFromObject?: IdGetter; queryTransformer?: QueryTransformer; 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); }