import type { ApiClient } from "@promobase/sdk-runtime"; import { Cursor } from "@promobase/sdk-runtime"; import { metaPagination } from "../../pagination.ts"; export interface CommerceOrderFields { buyer_details: Record; channel: string; contains_bopis_items: boolean; created: string; estimated_payment_details: Record; id: string; is_group_buy: boolean; is_test_order: boolean; last_updated: string; merchant_order_id: string; order_status: Record; pre_order_details: Record; selected_shipping_option: Record; ship_by_date: string; shipping_address: Record; } export interface CommerceOrderListReturnsParams { merchant_return_id?: string; statuses?: string[]; [key: string]: unknown; } export interface CommerceOrderCreateShipmentsParams { external_redemption_link?: string; external_shipment_id?: string; fulfillment?: Record; idempotency_key: string; items?: Record[]; merchant_order_reference?: string; shipment_origin_postal_code?: string; shipping_tax_details?: Record; should_use_default_fulfillment_location?: boolean; tracking_info?: Record; [key: string]: unknown; } export function commerceOrderNode(client: ApiClient, id: string) { return { __path: id, __brand: undefined as unknown as CommerceOrderFields, get: (opts: { fields: F; params?: Record }) => client.get>(`${id}`, opts), cancellations: )[]>(opts: { fields: F; params?: Record }) => new Cursor, F[number]>>(client, `${id}/cancellations`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), items: )[]>(opts: { fields: F; params?: Record }) => new Cursor, F[number]>>(client, `${id}/items`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), payments: )[]>(opts: { fields: F; params?: Record }) => new Cursor, F[number]>>(client, `${id}/payments`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), promotionDetails: )[]>(opts: { fields: F; params?: Record }) => new Cursor, F[number]>>(client, `${id}/promotion_details`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), promotions: )[]>(opts: { fields: F; params?: Record }) => new Cursor, F[number]>>(client, `${id}/promotions`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), refunds: )[]>(opts: { fields: F; params?: Record }) => new Cursor, F[number]>>(client, `${id}/refunds`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), returns: )[]>(opts: { fields: F; params?: CommerceOrderListReturnsParams }) => new Cursor, F[number]>>(client, `${id}/returns`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), shipments: { __path: `${id}/shipments`, __brand: undefined as unknown as Record, list: )[]>(opts: { fields: F; params?: Record }) => new Cursor, F[number]>>(client, `${id}/shipments`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: CommerceOrderCreateShipmentsParams) => client.post(`${id}/shipments`, params as Record), }, }; }