import type { JSONValue } from '../src'; import type { Profile } from './indexing'; export declare function stringMatcher(traits: Traits, key: string): { is: (target: T) => boolean; exists: () => boolean; includesItem: (...targets: T[]) => boolean; includesAnyOf: (...targets: T[]) => boolean; not: { is: (target: T) => boolean; includesItem: (...targets: T[]) => boolean; includesAnyOf: (...targets: T[]) => boolean; }; }; export declare function arrayMatcher(traits: Traits, key: string): { includesItem: (target: T) => boolean; includesAnyOf: (...targets: T[]) => boolean; includesAllOf: (...targets: T[]) => boolean; not: { includesItem: (target: T) => boolean; includesAnyOf: (...targets: T[]) => boolean; includesAllOf: (...targets: T[]) => boolean; }; }; export declare function numberMatcher(traits: Traits, key: string): { exists: () => boolean; is: (target: number) => boolean; greaterThan: (target: number) => boolean; greaterThanOrEqual: (target: number) => boolean; lessThan: (target: number) => boolean; lessThanOrEqual: (target: number) => boolean; not: { is: (target: number) => boolean; greaterThan: (target: number) => boolean; greaterThanOrEqual: (target: number) => boolean; lessThan: (target: number) => boolean; lessThanOrEqual: (target: number) => boolean; }; }; export declare function has(profile: Profile, trait: string): boolean; export declare function greaterThan(profile: Profile, trait: string, value: number): boolean; export declare function greaterThanOrEqual(profile: Profile, trait: string, value: number): boolean; export declare function lessThan(profile: Profile, trait: string, value: number): boolean; export declare function lessThanOrEqual(profile: Profile, trait: string, value: number): boolean; export declare function is(profile: Profile, trait: string, value?: JSONValue): boolean; export declare function matchesObject(profile: Profile, trait: string, value: Record): boolean; export declare function includes(profile: Profile, trait: string, value: JSONValue): boolean; export declare function includesAnyOf(profile: Profile, trait: string, values: JSONValue[]): boolean; export declare function includesAllOf(profile: Profile, trait: string, values: JSONValue[]): boolean; export declare class Traits { private profile; constructor(profile: Profile); has(trait: string): boolean; greaterThan(trait: string, value: number): boolean; greaterThanOrEqual(trait: string, value: number): boolean; lessThan(trait: string, value: number): boolean; lessThanOrEqual(trait: string, value: number): boolean; is(trait: string, value?: JSONValue): boolean; matchesObject(trait: string, value: Record): boolean; includes(trait: string, value: JSONValue): boolean; includesAnyOf(trait: string, values: JSONValue[]): boolean; includesAllOf(trait: string, values: JSONValue[]): boolean; get not(): { has: (trait: string) => boolean; greaterThan: (trait: string, value: number) => boolean; greaterThanOrEqual: (trait: string, value: number) => boolean; lessThan: (trait: string, value: number) => boolean; lessThanOrEqual: (trait: string, value: number) => boolean; is: (trait: string, value?: JSONValue | undefined) => boolean; matchesObject: (trait: string, value: Record) => boolean; includes: (trait: string, value: JSONValue) => boolean; includesAnyOf: (trait: string, values: JSONValue[]) => boolean; includesAllOf: (trait: string, values: JSONValue[]) => boolean; }; }