import type { Dict } from "./commonTypes"; import type { BrandingFieldType, CustomerOAuthProviderKind, InventoryPolicy, TieredPricingModel } from "./json/storefrontTypes"; import { AbstractOp, GraphQLOpts } from "./request"; import { AnalyticsEmbedInfo } from "./script"; interface TieredPricing { model: TieredPricingModel; tiers: Array<{ from: number; price: number; to: number; }>; } interface File { id: string; image_alt: string; image_color: string; image_height: number; image_width: number; mime: string; public_url: string; } interface Language { code: string; id: string; name: string; name_en: string; name_native: string; } export interface CategoryBrief { id: string; parentID: string; title: string; relativeUrl: string; featured: boolean; quantity: number; imageUrl?: string; } export interface VariantBrief { currency_prices: Array<{ currency: string; map_price: number; price: number; retail_price: number; sale_price: number; tiered_pricing: TieredPricing | null; }>; customer_group_price: number; id: string; inventory: { available: number; low_stock: boolean; locations: { available: number; low_stock: boolean; inventory_location: { id: string; } | null; }[]; } | null; inventory_policy: InventoryPolicy; is_default: boolean; map_price: number; media_files: Array<{ file: File | null; thumbnail_file: File | null; }>; options: Array<{ option_id: string; option_value_id: string; }>; price: number; retail_price: number; sale_price: number; sale_price_eligible: boolean; sku: string; tiered_pricing: TieredPricing | null; } export interface ProductBrief { id: string; handle: string; title: string; variants: Array | null; average_score: number; review_count: number; } interface Page { items: T[]; last_key: string; } export declare type Modify = Omit & R; export declare type CategoryRecursive = Modify[]; }>; interface CategoryReq { id: string; title: string; featured: boolean; handle: string; has_children: boolean; image_files: ({ public_url: string; } | null)[] | null; } interface ProductReq { id: string; title: string; handle: string; average_score: number; review_count: number; categories: ({ id: string; } | null)[] | null; variants: (VariantReq | null)[] | null; } interface VariantReq { currency_prices: VariantBrief["currency_prices"]; customer_group_price: VariantBrief["customer_group_price"]; id: VariantBrief["id"]; inventory: VariantBrief["inventory"]; inventory_policy: VariantBrief["inventory_policy"]; is_default: VariantBrief["is_default"]; map_price: VariantBrief["map_price"]; media_files: VariantBrief["media_files"]; options: VariantBrief["options"]; price: VariantBrief["price"]; retail_price: VariantBrief["retail_price"]; sale_price: VariantBrief["sale_price"]; sale_price_eligible: VariantBrief["sale_price_eligible"]; sku: VariantBrief["sku"]; tiered_pricing: VariantBrief["tiered_pricing"]; } interface BrandingReq { fields: Array<{ boolean: boolean | null; color: string | null; font: string | null; id: string; image_file: File | null; link: string | null; radio: string | null; string: string | null; text: string | null; type: BrandingFieldType; }>; } interface ShopReq { app_domain: string; created_at: string; currency: string; customer_oauth_providers: Array<{ client_id: string; kind: CustomerOAuthProviderKind; }>; customer_service_email: string; id: string; name: string; primary_domain: { domain: string; id: string; } | null; product_review_enabled: boolean; tax_label: string; timezone: string; language: Language | null; languages: Array | null; } interface CurrencyReq { currency: { code: string; }; } interface ReviewDimensionReq { id: string; } interface OptionReq { id: string; } interface InventoryLocationReq { id: string; } interface AdditionalDataContext { menus: Menu[]; contentBlocks: ContentBlock[]; } interface LoadConfig { graphql: { getBrandingQuery: AbstractOp<{ branding: Branding | null; }, { shopID: string; }>; getCategoriesQuery: AbstractOp<{ categories: Category[] | null; }, { shopID: string; ids?: string[] | null; childrenOf?: string | null; }>; getContentBlocksPageQuery: AbstractOp<{ page: Page | null; }, { shopID: string; limit: number; lastKey: string; }>; getGatewaysQuery: AbstractOp<{ gateways: Gateway[] | null; }, { shopID: string; }>; getInventoryLocationsQuery: AbstractOp<{ inventoryLocations: InventoryLocation[] | null; }, { shopID: string; }>; getMenusPageQuery: AbstractOp<{ page: Page | null; }, { shopID: string; limit: number; lastKey: string; }>; getOptionsQuery: AbstractOp<{ options: Option[] | null; }, { shopID: string; }>; getProductsPageQuery: AbstractOp<{ page: Page | null; }, { shopID: string; limit: number; lastKey: string; }>; getReviewDimensionsQuery: AbstractOp<{ reviewDimensions: ReviewDimension[] | null; }, { shopID: string; }>; getReviewSettingsQuery: AbstractOp<{ reviewSettings: ReviewSettings | null; }, { shopID: string; }>; getShopCurrenciesQuery: AbstractOp<{ currencies: Currency[] | null; }, { shopID: string; }>; getShopQuery: AbstractOp<{ shops: Shop[] | null; }, { shopID: string; }>; }; shopID: string; cdn: string; beacon: string; staticData: boolean; resolveAdditionalLocaleData: (ctx: AdditionalDataContext) => AdditionalLocaleData; resolveAdditionalShopData: (ctx: AdditionalDataContext) => AdditionalShopData; opts?: GraphQLOpts; siteUrl?: string; } export declare type LocaleData = { isDefault: boolean; locale: string; shopData: ShopData; products: Product[]; productsBrief: Dict; contentBlocks: ContentBlock[]; categories: CategoryRecursive[]; branding: Branding; gateways: Gateway[]; analytics: AnalyticsEmbedInfo; } & AdditionalLocaleData; export declare type ShopData = { singleLocale: boolean; locale: string; shop: Shop; gateways: Gateway[]; currencies: Dict; categories: Dict; options: Dict