import type { QueryParameter } from '../../queryParameters/models'; export interface BuildListingEndpointParameters { baseEndpoint?: string; customQueryParameters?: Array; parameters: Omit; apiFormat?: 'Standard' | 'JSON-LD'; } export interface SearchMatch { field: string; value: string; } export interface Parameters { customQueryParameters?: Array; limit?: number; page?: number; search?: SearchParameter; sort?: SortQueryParameterValue; apiFormat: 'Standard' | 'JSON-LD'; } export interface SearchParameter { conditions?: Array; lists?: Array; regex?: RegexSearchParameter; } export interface ListsSearchQueryParameterValue { $and: Array<{ [field: string]: { [field: string]: { $in: Array } } }>; } export interface SortQueryParameterValue { [sortf: string]: string; } export interface RegexSearchParameter { fields: Array; value: string; } export interface ListsSearchParameter { field: string; values: Array; } export type Operator = | '$eq' | '$neq' | '$lt' | '$le' | '$gt' | '$ge' | '$lk' | '$nk' | '$in' | '$ni' | '$rg'; export type ConditionValue = { [value in Operator]?: string | Array; }; export interface ConditionsSearchParameter { field: string; value?: unknown; values?: ConditionValue; operator?: '$and' | '$or'; } type SearchPatterns = Array<{ [field: string]: { $rg: string } }>; export interface OrSearchQueryParameterValue { $or: SearchPatterns; } export interface AndSearchQueryParameterValue { $and: SearchPatterns; } export type RegexSearchQueryParameterValue = | OrSearchQueryParameterValue | AndSearchQueryParameterValue | undefined; export interface GetListsSearchQueryParameterValueProps { $and: Array>; } export interface GetConditionsSearchQueryParameterValueState { $and: Array>; } export type SearchQueryParameterValue = | { $and: Array< | RegexSearchQueryParameterValue | GetListsSearchQueryParameterValueProps | GetConditionsSearchQueryParameterValueState >; } | RegexSearchQueryParameterValue | GetListsSearchQueryParameterValueProps | GetConditionsSearchQueryParameterValueState | undefined; export interface FieldInValues { $in: Array; }