import { variadicArgumentToArray } from '@sap-cloud-sdk/util' ; import type { EntityBase } from '../entity-base' ; import type { OneToManyLink } from '../selectable' ; import { DeSerializers } from '../de-serializers' ; import type { BooleanFilterFunction } from './boolean-filter-function' ; import type { Filter } from './filter' ; import { UnaryFilter } from './unary-filter' ; import { FilterList } from './filter-list' ; import { FilterLambdaExpression } from './filter-lambda-expression' ; import { FilterLink } from './filter-link' ; typeparam internal export type Filterable < EntityT extends EntityBase , DeSerializersT extends DeSerializers , LinkedEntityT extends EntityBase = EntityBase > = Filter < EntityT , DeSerializersT , any > | FilterLink < EntityT , DeSerializersT , LinkedEntityT > | FilterList < EntityT , DeSerializersT > | FilterLambdaExpression < EntityT , DeSerializersT > | UnaryFilter < EntityT > | BooleanFilterFunction < EntityT > | OneToManyLink < EntityT , DeSerializersT , LinkedEntityT > ; typeparam param expressions returns internal export function and < EntityT extends EntityBase , DeSerializersT extends DeSerializers > ( expressions ) ; internal export function and < EntityT extends EntityBase , DeSerializersT extends DeSerializers > ( ... expressions ) ; param first param rest returns internal export function and < EntityT extends EntityBase , DeSerializersT extends DeSerializers > ( first , ... rest ) { return new FilterList ( variadicArgumentToArray ( first , rest ) ) ; } typeparam param expressions returns internal export function or < EntityT extends EntityBase , DeSerializersT extends DeSerializers > ( expressions ) ; internal export function or < EntityT extends EntityBase , DeSerializersT extends DeSerializers > ( ... expressions ) ; param first param rest returns internal export function or < EntityT extends EntityBase , DeSerializersT extends DeSerializers > ( first , ... rest ) { return new FilterList ( [ ] , variadicArgumentToArray ( first , rest ) ) ; } param filter returns internal export function not < EntityT extends EntityBase , DeSerializersT extends DeSerializers > ( filter ) { return new UnaryFilter ( filter , 'not' ) ; }