import type { TypeLambda } from "@fp-ts/core/HKT"; import * as contravariant from "@fp-ts/core/typeclass/Contravariant"; import * as invariant from "@fp-ts/core/typeclass/Invariant"; import * as monoid from "@fp-ts/core/typeclass/Monoid"; import * as of_ from "@fp-ts/core/typeclass/Of"; import * as product_ from "@fp-ts/core/typeclass/Product"; import * as semigroup from "@fp-ts/core/typeclass/Semigroup"; import type { Semigroup } from "@fp-ts/core/typeclass/Semigroup"; import * as semiProduct from "@fp-ts/core/typeclass/SemiProduct"; /** * @category models * @since 1.0.0 */ export interface Predicate { (a: A): boolean; } /** * @category type lambdas * @since 1.0.0 */ export interface PredicateTypeLambda extends TypeLambda { readonly type: Predicate; } /** * @category models * @since 1.0.0 */ export interface Refinement { (a: A): a is B; } /** * Tests if a value is a `string`. * * @param input - The value to test. * * @example * import { isString } from '@fp-ts/core/Predicate' * * assert.deepStrictEqual(isString("a"), true) * * assert.deepStrictEqual(isString(1), false) * * @category guards * @since 1.0.0 */ export declare const isString: (input: unknown) => input is string; /** * Tests if a value is a `number`. * * @param input - The value to test. * * @example * import { isNumber } from '@fp-ts/core/Predicate' * * assert.deepStrictEqual(isNumber(2), true) * * assert.deepStrictEqual(isNumber("2"), false) * * @category guards * @since 1.0.0 */ export declare const isNumber: (input: unknown) => input is number; /** * Tests if a value is a `boolean`. * * @param input - The value to test. * * @example * import { isBoolean } from '@fp-ts/core/Predicate' * * assert.deepStrictEqual(isBoolean(true), true) * * assert.deepStrictEqual(isBoolean("true"), false) * * @category guards * @since 1.0.0 */ export declare const isBoolean: (input: unknown) => input is boolean; /** * Tests if a value is a `bigint`. * * @param input - The value to test. * * @example * import { isBigint } from "@fp-ts/core/Predicate" * * assert.deepStrictEqual(isBigint(1n), true) * * assert.deepStrictEqual(isBigint(1), false) * * @category guards * @since 1.0.0 */ export declare const isBigint: (input: unknown) => input is bigint; /** * Tests if a value is a `symbol`. * * @param input - The value to test. * * @example * import { isSymbol } from "@fp-ts/core/Predicate" * * assert.deepStrictEqual(isSymbol(Symbol.for("a")), true) * * assert.deepStrictEqual(isSymbol("a"), false) * * @category guards * @since 1.0.0 */ export declare const isSymbol: (input: unknown) => input is symbol; /** * Tests if a value is a `function`. * * @param input - The value to test. * * @example * import { isFunction } from '@fp-ts/core/Predicate' * * assert.deepStrictEqual(isFunction(isFunction), true) * * assert.deepStrictEqual(isFunction("function"), false) * * @category guards * @since 1.0.0 */ export declare const isFunction: (input: unknown) => input is Function; /** * Tests if a value is `undefined`. * * @param input - The value to test. * * @example * import { isUndefined } from "@fp-ts/core/Predicate" * * assert.deepStrictEqual(isUndefined(undefined), true) * * assert.deepStrictEqual(isUndefined(null), false) * assert.deepStrictEqual(isUndefined("undefined"), false) * * @category guards * @since 1.0.0 */ export declare const isUndefined: (input: unknown) => input is undefined; /** * Tests if a value is not `undefined`. * * @param input - The value to test. * * @example * import { isNotUndefined } from "@fp-ts/core/Predicate" * * assert.deepStrictEqual(isNotUndefined(null), true) * assert.deepStrictEqual(isNotUndefined("undefined"), true) * * assert.deepStrictEqual(isNotUndefined(undefined), false) * * @category guards * @since 1.0.0 */ export declare const isNotUndefined: (input: A) => input is Exclude; /** * Tests if a value is `undefined`. * * @param input - The value to test. * * @example * import { isNull } from "@fp-ts/core/Predicate" * * assert.deepStrictEqual(isNull(null), true) * * assert.deepStrictEqual(isNull(undefined), false) * assert.deepStrictEqual(isNull("null"), false) * * @category guards * @since 1.0.0 */ export declare const isNull: (input: unknown) => input is null; /** * Tests if a value is not `undefined`. * * @param input - The value to test. * * @example * import { isNotNull } from "@fp-ts/core/Predicate" * * assert.deepStrictEqual(isNotNull(undefined), true) * assert.deepStrictEqual(isNotNull("null"), true) * * assert.deepStrictEqual(isNotNull(null), false) * * @category guards * @since 1.0.0 */ export declare const isNotNull: (input: A) => input is Exclude; /** * A guard that always fails. * * @param _ - The value to test. * * @example * import { isNever } from "@fp-ts/core/Predicate" * * assert.deepStrictEqual(isNever(null), false) * assert.deepStrictEqual(isNever(undefined), false) * assert.deepStrictEqual(isNever({}), false) * assert.deepStrictEqual(isNever([]), false) * * @category guards * @since 1.0.0 */ export declare const isNever: (input: unknown) => input is never; /** * A guard that always succeeds. * * @param _ - The value to test. * * @example * import { isUnknown } from "@fp-ts/core/Predicate" * * assert.deepStrictEqual(isUnknown(null), true) * assert.deepStrictEqual(isUnknown(undefined), true) * * assert.deepStrictEqual(isUnknown({}), true) * assert.deepStrictEqual(isUnknown([]), true) * * @category guards * @since 1.0.0 */ export declare const isUnknown: (input: unknown) => input is unknown; /** * Tests if a value is an `object`. * * @param input - The value to test. * * @example * import { isObject } from "@fp-ts/core/Predicate" * * assert.deepStrictEqual(isObject({}), true) * assert.deepStrictEqual(isObject([]), true) * * assert.deepStrictEqual(isObject(null), false) * assert.deepStrictEqual(isObject(undefined), false) * * @category guards * @since 1.0.0 */ export declare const isObject: (input: unknown) => input is object; /** * A guard that succeeds when the input is `null` or `undefined`. * * @param input - The value to test. * * @example * import { isNullable } from "@fp-ts/core/Predicate" * * assert.deepStrictEqual(isNullable(null), true) * assert.deepStrictEqual(isNullable(undefined), true) * * assert.deepStrictEqual(isNullable({}), false) * assert.deepStrictEqual(isNullable([]), false) * * @category guards * @since 1.0.0 */ export declare const isNullable: (input: A) => input is Extract; /** * A guard that succeeds when the input is not `null` or `undefined`. * * @param input - The value to test. * * @example * import { isNotNullable } from "@fp-ts/core/Predicate" * * assert.deepStrictEqual(isNotNullable({}), true) * assert.deepStrictEqual(isNotNullable([]), true) * * assert.deepStrictEqual(isNotNullable(null), false) * assert.deepStrictEqual(isNotNullable(undefined), false) * * @category guards * @since 1.0.0 */ export declare const isNotNullable: (input: A) => input is NonNullable; /** * A guard that succeeds when the input is an `Error`. * * @param input - The value to test. * * @example * import { isError } from "@fp-ts/core/Predicate" * * assert.deepStrictEqual(isError(new Error()), true) * * assert.deepStrictEqual(isError(null), false) * assert.deepStrictEqual(isError({}), false) * * @category guards * @since 1.0.0 */ export declare const isError: (input: unknown) => input is Error; /** * A guard that succeeds when the input is a `Date`. * * @param input - The value to test. * * @example * import { isDate } from "@fp-ts/core/Predicate" * * assert.deepStrictEqual(isDate(new Date()), true) * * assert.deepStrictEqual(isDate(null), false) * assert.deepStrictEqual(isDate({}), false) * * @category guards * @since 1.0.0 */ export declare const isDate: (input: unknown) => input is Date; /** * A guard that succeeds when the input is a record. * * @param input - The value to test. * * @example * import { isRecord } from "@fp-ts/core/Predicate" * * assert.deepStrictEqual(isRecord({}), true) * assert.deepStrictEqual(isRecord({ a: 1 }), true) * * assert.deepStrictEqual(isRecord([]), false) * assert.deepStrictEqual(isRecord([1, 2, 3]), false) * assert.deepStrictEqual(isRecord(null), false) * assert.deepStrictEqual(isRecord(undefined), false) * * @category guards * @since 1.0.0 */ export declare const isRecord: (input: unknown) => input is { [x: string]: unknown; [x: symbol]: unknown; }; /** * A guard that succeeds when the input is a readonly record. * * @param input - The value to test. * * @example * import { isReadonlyRecord } from "@fp-ts/core/Predicate" * * assert.deepStrictEqual(isReadonlyRecord({}), true) * assert.deepStrictEqual(isReadonlyRecord({ a: 1 }), true) * * assert.deepStrictEqual(isReadonlyRecord([]), false) * assert.deepStrictEqual(isReadonlyRecord([1, 2, 3]), false) * assert.deepStrictEqual(isReadonlyRecord(null), false) * assert.deepStrictEqual(isReadonlyRecord(undefined), false) * * @category guards * @since 1.0.0 */ export declare const isReadonlyRecord: (input: unknown) => input is { readonly [x: string | symbol]: unknown; }; /** * @since 1.0.0 */ export declare const compose: { (bc: Refinement): (ab: Refinement) => Refinement; (ab: Refinement, bc: Refinement): Refinement; }; /** * @category combinators * @since 1.0.0 */ export declare const contramap: { (f: (b: B) => A): (self: Predicate) => Predicate; (self: Predicate, f: (b: B) => A): Predicate; }; /** * @category instances * @since 1.0.0 */ export declare const Contravariant: contravariant.Contravariant; /** * @category instances * @since 1.0.0 */ export declare const Invariant: invariant.Invariant; /** * @since 1.0.0 */ export declare const tupled: (self: Predicate) => Predicate; /** * @since 1.0.0 */ export declare const of: (_: A) => Predicate; /** * @category instances * @since 1.0.0 */ export declare const Of: of_.Of; /** * @since 1.0.0 */ export declare const unit: Predicate; /** * @category instances * @since 1.0.0 */ export declare const SemiProduct: semiProduct.SemiProduct; /** * @category instances * @since 1.0.0 */ export declare const Product: product_.Product; /** * Appends an element to the end of a tuple. * * @since 1.0.0 */ export declare const appendElement: { , B>(self: Predicate, that: Predicate): Predicate; (that: Predicate): >(self: Predicate) => Predicate; }; /** * @since 1.0.0 */ export declare const tuple: >>(...predicates: T) => Predicate] ? A : never; }>>; /** * @since 1.0.0 */ export declare const struct: >>(predicates: R) => Predicate<{ readonly [K in keyof R]: [R[K]] extends [Predicate] ? A : never; }>; /** * @since 1.0.0 */ export declare const not: (self: Predicate) => Predicate; /** * @since 1.0.0 */ export declare const or: { (that: Predicate): (self: Predicate) => Predicate; (self: Predicate, that: Predicate): Predicate; }; /** * @since 1.0.0 */ export declare const and: { (that: Predicate): (self: Predicate) => Predicate; (self: Predicate, that: Predicate): Predicate; }; /** * @category instances * @since 1.0.0 */ export declare const getSemigroupAny: () => semigroup.Semigroup>; /** * @category instances * @since 1.0.0 */ export declare const getMonoidAny: () => monoid.Monoid>; /** * @category instances * @since 1.0.0 */ export declare const getSemigroupAll: () => semigroup.Semigroup>; /** * @category instances * @since 1.0.0 */ export declare const getMonoidAll: () => monoid.Monoid>; /** * @since 1.0.0 */ export declare const all: (collection: Iterable>) => Predicate; /** * @since 1.0.0 */ export declare const any: (collection: Iterable>) => Predicate; /** * @category do notation * @since 1.0.0 */ export declare const bindTo: { (name: N): (self: Predicate) => Predicate<{ readonly [K in N]: A; }>; (self: Predicate, name: N): Predicate<{ readonly [K in N]: A; }>; }; /** * @category do notation * @since 1.0.0 */ export declare const Do: Predicate<{}>; /** * A variant of `bind` that sequentially ignores the scope. * * @category do notation * @since 1.0.0 */ export declare const andThenBind: { (name: Exclude, that: Predicate): (self: Predicate) => Predicate<{ readonly [K in N | keyof A]: K extends keyof A ? A[K] : B; }>; (self: Predicate, name: Exclude, that: Predicate): Predicate<{ readonly [K in N | keyof A]: K extends keyof A ? A[K] : B; }>; }; //# sourceMappingURL=Predicate.d.ts.map