isFresh(
      result: { [key: string]: any, ... },
      parent: StoreObject | Reference,
      selectionSet: SelectionSetNode,
      context: ReadMergeModifyContext
    ): boolean;
  }

  // @apollo/client/cache/inmemory/writeToStore.d.ts

  declare export type WriteContext = {
    +written: {
      [dataId: string]: SelectionSetNode[],
    },
    +fragmentMap: FragmentMap,
    lookupFragment: FragmentMapFunction,
    merge<T>(existing: T, incoming: T): T,
    overwrite: boolean,
    incomingById: Map<
      string,
      {
        storeObject: StoreObject,
        mergeTree?: MergeTree,
        fieldNodeSet: Set<FieldNode>,
        ...
      }
    >,
    clientOnly: boolean,
    deferred: boolean,
    flavors: Map<string, FlavorableWriteContext>,
    ...
  } & ReadMergeModifyContext;
  declare export type FlavorableWriteContext = {|
    clientOnly: boolean,
    deferred: boolean,
    flavors: Map<string, FlavorableWriteContext>,
  |}
  declare export interface WriteOptions<TResult = any, TVariables = any>
    // extends $Diff<DataProxy$Query<TVariables, TResult>, {| id: any |}>, $Diff<DataProxy$WriteOptions<TResult>, {| data: any |}>
  {
    dataId?: string;
    result: TResult;
  }
This type is used to ensure that the variables you pass in to the query are assignable to Variables
and that the Result is assignable to whatever you pass your result to. The method is never actually
implemented, but the type is valid because we list it as optional