export interface ApiParams< FieldOptions = '', OrderOptions = '', ConditionOptions = '', > { codes?: Array; force?: boolean; limit?: number; offset?: number; fields?: Array; order?: Array>; condition?: ApiParamsConditionGroup; meta?: ApiParamsMeta; // for product quote targetZipCode?: string; targetCountryCode?: string; items?: Array<{ productId: number; quantity: number }>; // for promotional forecast productId?: number; variationMap?: Record; loginUrl?: string; registerUrl?: string; } export interface ApiParamsOrder { field: FieldOptions; order: 'ASC' | 'DESC'; } export interface ApiParamsConditionGroup { type: 'AND' | 'OR'; conditions: Array< ApiParamsConditionGroup | ApiParamsCondition >; } export interface ApiParamsCondition { field: FieldOptions; type?: undefined; value: | boolean | string | number | Array | Array | null | undefined; operator?: | '=' | '!=' | '>' | '>=' | '<' | '<=' | 'in' | 'notIn' | 'like' | 'between'; } export interface ApiParamsMeta { dimensions?: { size?: 'Meter' | 'Centimeter'; weight?: 'Gram' | 'Kilogram'; }; priceParameters?: { [productId: string]: { code?: string; quantity?: number; upsellId?: number; productPairOfferId?: number; }; }; }