/** * The experienceIds product metafield. The Fanfare app DEFINES it under the * reserved namespace `$app:product`, which Shopify rewrites at runtime to * `app----product`. The `$app:` namespace is resolved SERVER-SIDE * by the Fanfare app proxy; the storefront never addresses the reified numeric * namespace directly. * * The live read is an app-proxy fetch * (`GET {proxyBaseUrl}/experiences/ids-by-handle/{key}`) performed by * createShopifyExperienceResolver; the constant and parser below are the stable * primitives the preload tier builds on. */ export declare const FANFARE_PRODUCT_METAFIELD: { readonly key: "experienceIds"; readonly type: "list.single_line_text_field"; readonly appRelativeNamespace: "$app:product"; }; /** * Parse the raw metafield value into an ordered experience-id list. Pure, * SSR-safe, and never throws — every input yields a list (empty on anything * unusable): * - JSON array of strings → that array, order preserved * - array containing any non-string entry → [] (the platform contract is a * list of single-line text fields; a structurally mixed array is unusable) * - non-array / bare scalar / malformed JSON → [] * - absent / empty → [] */ export declare function parseExperienceIds(metafieldValue: string | null | undefined): string[]; /** * Convenience: first id wins, or null. The platform single-experience contract. * `parseFirstExperienceId(v) === parseExperienceIds(v)[0] ?? null`. */ export declare function parseFirstExperienceId(metafieldValue: string | null | undefined): string | null;