import type { GetProductQuery, SwishApp, SwishOptions } from "./swish"; export interface SwishUiManifest { scripts: Record; prerender: Record; styles: { critical: string; nonCritical: string; theme: string; }; version: string; } export interface SwishUiElementSpec { script: string; template: string; } declare global { interface Window { swish: SwishApp; } } /** * Product and variant metafields keyed by `namespace`, then by `key`. * * @example * product.metafields.custom?.combined_listing_parent * product.metafields["$app:swish"]?.setup */ export type Metafields = Record>; type RawProduct = NonNullable; type RawProductVariant = NonNullable; export type ProductVariant = Omit & { metafields: Metafields; }; export type Product = Omit & { metafields: Metafields; selectedOrFirstAvailableVariant: ProductVariant | null; variant?: ProductVariant | null; }; export type PreviewOptions = Omit; export {};