import * as React from 'react'; import * as PropTypes from 'prop-types'; import ApolloClient, { ApolloError, FetchPolicy } from 'apollo-client'; import { DocumentNode } from 'graphql'; import { OperationVariables } from './types'; export interface SubscriptionResult { loading: boolean; data?: TData; error?: ApolloError; } export interface OnSubscriptionDataOptions { client: ApolloClient; subscriptionData: SubscriptionResult; } export interface SubscriptionProps { subscription: DocumentNode; variables?: TVariables; fetchPolicy?: FetchPolicy; shouldResubscribe?: any; client?: ApolloClient; onSubscriptionData?: (options: OnSubscriptionDataOptions) => any; onSubscriptionComplete?: () => void; children?: (result: SubscriptionResult) => React.ReactNode; } export interface SubscriptionState { loading: boolean; data?: TData; error?: ApolloError; } export interface SubscriptionContext { client?: ApolloClient; } declare class Subscription extends React.Component, SubscriptionState> { static contextTypes: { client: PropTypes.Requireable; }; static propTypes: { subscription: PropTypes.Validator; variables: PropTypes.Requireable; children: PropTypes.Requireable<(...args: any[]) => any>; onSubscriptionData: PropTypes.Requireable<(...args: any[]) => any>; onSubscriptionComplete: PropTypes.Requireable<(...args: any[]) => any>; shouldResubscribe: PropTypes.Requireable any)>; }; private client; private queryObservable?; private querySubscription?; constructor(props: SubscriptionProps, context: SubscriptionContext); componentDidMount(): void; componentWillReceiveProps(nextProps: SubscriptionProps, nextContext: SubscriptionContext): void; componentWillUnmount(): void; render(): any; private initialize; private startSubscription; private getInitialState; private updateCurrentData; private updateError; private completeSubscription; private endSubscription; } export default Subscription;