import type { ApiClient } from "@promobase/sdk-runtime"; import { Cursor } from "@promobase/sdk-runtime"; import { metaPagination } from "../../pagination.ts"; import type { AutomotiveModelFields } from "./automotive-model.ts"; import type { DestinationFields } from "./destination.ts"; import type { FlightFields } from "./flight.ts"; import type { HomeListingFields } from "./home-listing.ts"; import type { HotelFields } from "./hotel.ts"; import type { ProductCatalogFields } from "./product-catalog.ts"; import type { ProductItemFields } from "./product-item.ts"; import type { ProductSetMetadataFields } from "./product-set-metadata.ts"; import type { VehicleFields } from "./vehicle.ts"; import type { VehicleOfferFields } from "./vehicle-offer.ts"; export interface ProductSetFields { auto_creation_url: string; filter: string; id: string; latest_metadata: ProductSetMetadataFields; live_metadata: ProductSetMetadataFields; name: string; ordering_info: number[]; product_catalog: ProductCatalogFields; product_count: number; retailer_id: string; } export interface ProductSetListAutomotiveModelsParams { bulk_pagination?: boolean; filter?: Record; [key: string]: unknown; } export interface ProductSetListDestinationsParams { bulk_pagination?: boolean; filter?: Record; [key: string]: unknown; } export interface ProductSetListFlightsParams { bulk_pagination?: boolean; filter?: Record; [key: string]: unknown; } export interface ProductSetListHomeListingsParams { bulk_pagination?: boolean; filter?: Record; [key: string]: unknown; } export interface ProductSetListHotelsParams { bulk_pagination?: boolean; filter?: Record; [key: string]: unknown; } export interface ProductSetListProductsParams { bulk_pagination?: boolean; error_priority?: string; error_type?: string; filter?: Record; [key: string]: unknown; } export interface ProductSetListVehicleOffersParams { bulk_pagination?: boolean; filter?: Record; [key: string]: unknown; } export interface ProductSetListVehiclesParams { bulk_pagination?: boolean; filter?: Record; [key: string]: unknown; } export interface ProductSetUpdateParams { filter?: Record; metadata?: Record; name?: string; ordering_info?: number[]; publish_to_shops?: Record[]; retailer_id?: string; [key: string]: unknown; } export function productSetNode(client: ApiClient, id: string) { return { __path: id, __brand: undefined as unknown as ProductSetFields, get: (opts: { fields: F; params?: Record }) => client.get>(`${id}`, opts), update: (params: ProductSetUpdateParams) => client.post(`${id}`, params as Record), delete: () => client.delete(`${id}`, {}), automotiveModels: (opts: { fields: F; params?: ProductSetListAutomotiveModelsParams }) => new Cursor>(client, `${id}/automotive_models`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), destinations: (opts: { fields: F; params?: ProductSetListDestinationsParams }) => new Cursor>(client, `${id}/destinations`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), flights: (opts: { fields: F; params?: ProductSetListFlightsParams }) => new Cursor>(client, `${id}/flights`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), homeListings: (opts: { fields: F; params?: ProductSetListHomeListingsParams }) => new Cursor>(client, `${id}/home_listings`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), hotels: (opts: { fields: F; params?: ProductSetListHotelsParams }) => new Cursor>(client, `${id}/hotels`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), products: (opts: { fields: F; params?: ProductSetListProductsParams }) => new Cursor>(client, `${id}/products`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), vehicleOffers: (opts: { fields: F; params?: ProductSetListVehicleOffersParams }) => new Cursor>(client, `${id}/vehicle_offers`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), vehicles: (opts: { fields: F; params?: ProductSetListVehiclesParams }) => new Cursor>(client, `${id}/vehicles`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), }; }