import * as React from 'react'; import * as PropTypes from 'prop-types'; import ApolloClient, { PureQueryOptions, ApolloError, FetchPolicy } from 'apollo-client'; import { DataProxy } from 'apollo-cache'; import { DocumentNode, GraphQLError } from 'graphql'; import { OperationVariables, RefetchQueriesProviderFn } from './types'; export interface MutationResult> { data?: TData; error?: ApolloError; loading: boolean; called: boolean; client: ApolloClient; } export interface MutationContext { client?: ApolloClient; operations: Map; } export interface ExecutionResult> { data?: T; extensions?: Record; errors?: GraphQLError[]; } export declare type MutationUpdaterFn = (proxy: DataProxy, mutationResult: FetchResult) => void; export declare type FetchResult, C = Record, E = Record> = ExecutionResult & { extensions?: E; context?: C; }; export declare type MutationOptions, TVariables = OperationVariables> = { variables?: TVariables; optimisticResponse?: TData; refetchQueries?: Array | RefetchQueriesProviderFn; awaitRefetchQueries?: boolean; update?: MutationUpdaterFn; context?: Record; fetchPolicy?: FetchPolicy; }; export declare type MutationFn = (options?: MutationOptions) => Promise>; export interface MutationProps { client?: ApolloClient; mutation: DocumentNode; ignoreResults?: boolean; optimisticResponse?: TData; variables?: TVariables; refetchQueries?: Array | RefetchQueriesProviderFn; awaitRefetchQueries?: boolean; update?: MutationUpdaterFn; children: (mutateFn: MutationFn, result: MutationResult) => React.ReactNode; onCompleted?: (data: TData) => void; onError?: (error: ApolloError) => void; context?: Record; fetchPolicy?: FetchPolicy; } export interface MutationState { called: boolean; error?: ApolloError; data?: TData; loading: boolean; } declare class Mutation extends React.Component, MutationState> { static contextTypes: { client: PropTypes.Requireable; operations: PropTypes.Requireable; }; static propTypes: { mutation: PropTypes.Validator; variables: PropTypes.Requireable; optimisticResponse: PropTypes.Requireable; refetchQueries: PropTypes.Requireable<((...args: any[]) => any) | (string | object | null)[]>; awaitRefetchQueries: PropTypes.Requireable; update: PropTypes.Requireable<(...args: any[]) => any>; children: PropTypes.Validator<(...args: any[]) => any>; onCompleted: PropTypes.Requireable<(...args: any[]) => any>; onError: PropTypes.Requireable<(...args: any[]) => any>; fetchPolicy: PropTypes.Requireable; }; private client; private mostRecentMutationId; private hasMounted; constructor(props: MutationProps, context: any); componentDidMount(): void; componentWillUnmount(): void; componentWillReceiveProps(nextProps: MutationProps, nextContext: MutationContext): void; render(): React.ReactNode; private runMutation; private mutate; private onMutationStart; private onMutationCompleted; private onMutationError; private generateNewMutationId; private isMostRecentMutation; private verifyDocumentIsMutation; } export default Mutation;