import { NetworkInterface, createNetworkInterface } from './networkInterface'; import { GraphQLResult, Document } from 'graphql'; import { createApolloStore, ApolloStore, createApolloReducer, ApolloReducerConfig } from './store'; import { QueryManager, WatchQueryOptions, ObservableQuery } from './QueryManager'; import { readQueryFromStore, readFragmentFromStore } from './data/readFromStore'; import { writeQueryToStore, writeFragmentToStore } from './data/writeToStore'; import { IdGetter } from './data/extensions'; import { QueryTransformer, addTypenameToSelectionSet } from './queries/queryTransform'; export { createNetworkInterface, createApolloStore, createApolloReducer, readQueryFromStore, readFragmentFromStore, addTypenameToSelectionSet as addTypename, writeQueryToStore, writeFragmentToStore }; export default class ApolloClient { networkInterface: NetworkInterface; store: ApolloStore; reduxRootKey: string; initialState: any; queryManager: QueryManager; reducerConfig: ApolloReducerConfig; queryTransformer: QueryTransformer; shouldBatch: boolean; constructor({networkInterface, reduxRootKey, initialState, dataIdFromObject, queryTransformer, shouldBatch}?: { networkInterface?: NetworkInterface; reduxRootKey?: string; initialState?: any; dataIdFromObject?: IdGetter; queryTransformer?: QueryTransformer; shouldBatch?: boolean; }); watchQuery: (options: WatchQueryOptions) => ObservableQuery; query: (options: WatchQueryOptions) => Promise; mutate: (options: { mutation: Document; variables?: Object; }) => Promise; reducer(): Function; middleware: () => (store: ApolloStore) => (next: any) => (action: any) => any; initStore(): void; private setStore; }