import type { ApiClient } from "@promobase/sdk-runtime"; import { Cursor } from "@promobase/sdk-runtime"; import { metaPagination } from "../../pagination.ts"; import type { AppLinksFields } from "./app-links.ts"; import type { CatalogItemAppLinksFields } from "./catalog-item-app-links.ts"; import type { CatalogItemChannelsToIntegrityStatusFields } from "./catalog-item-channels-to-integrity-status.ts"; import type { OverrideDetailsFields } from "./override-details.ts"; import type { ProductItemLocalInfoFields } from "./product-item-local-info.ts"; import type { LocalServiceBusinessAvailability, LocalServiceBusinessCondition, LocalServiceBusinessImageFetchStatus, LocalServiceBusinessVisibility } from "../enums.ts"; export interface LocalServiceBusinessFields { address: Record; applinks: CatalogItemAppLinksFields; availability: LocalServiceBusinessAvailability; brand: string; category: string; condition: LocalServiceBusinessCondition; cuisine_type: string; currency: string; custom_label_0: string; custom_label_1: string; custom_label_2: string; custom_label_3: string; custom_label_4: string; custom_number_0: number; custom_number_1: number; custom_number_2: number; custom_number_3: number; custom_number_4: number; description: string; expiration_date: string; gtin: string; id: string; image_fetch_status: LocalServiceBusinessImageFetchStatus; images: string[]; local_info: ProductItemLocalInfoFields; local_service_business_id: string; main_local_info: ProductItemLocalInfoFields; phone: string; price: string; price_range: string; retailer_category: string; sanitized_images: string[]; size: string; tags: string[]; title: string; unit_price: Record; url: string; vendor_id: string; visibility: LocalServiceBusinessVisibility; } export interface LocalServiceBusinessListOverrideDetailsParams { keys?: string[]; type?: string; [key: string]: unknown; } export function localServiceBusinessNode(client: ApiClient, id: string) { return { __path: id, __brand: undefined as unknown as LocalServiceBusinessFields, get: (opts: { fields: F; params?: Record }) => client.get>(`${id}`, opts), channelsToIntegrityStatus: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/channels_to_integrity_status`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), overrideDetails: (opts: { fields: F; params?: LocalServiceBusinessListOverrideDetailsParams }) => new Cursor>(client, `${id}/override_details`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), }; }