import Observable from 'zen-observable-ts'; import { ICache } from './cache'; import { ClientEvent } from './events'; import { IExchangeResult } from './exchange'; import { IQuery } from './query'; export interface IClient { cache: ICache; executeSubscription$(subscriptionObject: IQuery): Observable; executeQuery$(queryObject: IQuery, skipCache: boolean): Observable; executeQuery(queryObject: IQuery, skipCache: boolean): Promise; executeMutation$(mutationObject: IQuery): Observable; executeMutation(mutationObject: IQuery): Promise; invalidateQuery(queryObject: IQuery): Promise; refreshAllFromCache(): void; subscribe(callback: (event: ClientEvent) => void): () => void; }