// @flow

// These types are not as powerful as the TypeScript types, but they get the job done

export type EqualityFn = (newArgs: mixed[], lastArgs: mixed[]) => boolean;

// default export
declare export default function memoizeOne<ResultFn: (...any[]) => mixed>(
  fn: ResultFn,
  isEqual?: EqualityFn,
): ResultFn & { clear: () => void };
