// Type Predicate Case // accounts for the common case of providing a data type as the first argument // and determining whether its type can be narrowed declare function negate( predicate: (data: T, ...args: A) => data is S ): (data: T, ...args: A) => data is Exclude // General Case declare function negate( predicate: (...args: A) => boolean ): (...args: A) => boolean export default negate