import { O as OrderlyElement, B as BasketController, b as BasketLabels, C as CheckoutLabels } from './default-shop-fSKaWxLQ.js';
export { c as DEFAULT_PAGE_LAYOUT_LOGO_SRC, d as DEFAULT_SHOP_BASE_URL, e as DEFAULT_SHOP_BRAND_LABEL, f as DEFAULT_SHOP_CATEGORY_DEFINITIONS, g as DEFAULT_SHOP_NAVIGATION_DEFINITIONS, h as DEFAULT_SHOP_SORT_OPTIONS, D as DefaultShopConfig, a as DefaultShopNavigationLayout, i as DefaultShopPageKind, L as LegalOwnershipConfig, j as OrderlyCheckoutElement, k as OrderlyPageLayoutElement, P as PageLayoutConfig, l as PageLayoutPrimaryNavPlacement, m as PageLayoutSlot, n as ProductDetailConfig, o as ProductDetailSecondaryCta, p as ProductDetailTrustNote, U as UiLanguage, q as UiTextKey, r as configureDefaultShop, s as configurePageLayout, t as configureUiLanguage, u as createBasketController, v as defaultBasketController, w as defaultShopBaseUrl, x as defaultShopBasketLabels, y as defaultShopBasketMode, z as defaultShopBrandLabel, A as defaultShopCheckoutHref, E as defaultShopCheckoutLabel, F as defaultShopCheckoutLabels, G as defaultShopCheckoutOrderTitle, H as defaultShopCheckoutPageDescription, I as defaultShopCheckoutPageTitle, J as defaultShopCheckoutTermsHref, K as defaultShopEmptyLabel, M as defaultShopHomeHref, N as defaultShopLegalOwnership, Q as defaultShopNavigationError, R as defaultShopNavigationItems, S as defaultShopNavigationLayout, T as defaultShopProductDetail, V as defaultShopProductHref, W as defaultShopProductHrefForShareUrl, X as defaultShopProductPathRoot, Y as defaultShopProductShareUrlFromUrl, Z as defaultShopProductUrlMode, _ as defaultShopSearchPlaceholder, $ as defaultShopSearchQuery, a0 as defaultShopSortOptions, a1 as defaultShopUiLanguage, a2 as defaultUiLanguage, a3 as dispatchBasketDraftEvent, a4 as draftOrderItemCount, a5 as formatUiText, a6 as normalizeUiLanguage, a7 as productToDraftLine, a8 as resetDefaultShop, a9 as uiText, aa as unpackServicePointHeaders, ab as unpackTransportMethods } from './default-shop-fSKaWxLQ.js';
import { S as StoredImageUrlVariant, a as StoredImageRole } from './shop-BzYfe7Ma.js';
export { A as AnalyticsConfig, b as AnalyticsEvent, C as CookieConsentCategoryConfig, c as CookieConsentCategoryId, d as CookieConsentConfig, e as CookieConsentListener, f as CookieConsentState, g as CookieConsentTexts, h as CookieWriteOptions, i as CreditFormatOptions, j as CreditFormatParts, D as DEFAULT_IMAGE_BASE_URL, k as DEFAULT_STORED_IMAGE_ROLES, G as GlobalTemplateRegistration, M as ManagedCookieConfig, O as OrderlyShopFooterElement, R as ResponsiveTemplateConfig, l as ShopConfig, m as ShopFooterAddress, n as ShopFooterConfig, o as ShopFooterContact, p as ShopFooterContactItem, q as ShopFooterInformationLink, r as ShopFooterOpeningHour, s as StoredImageRoleConfig, t as StoredImageUrlConfig, u as StoredImageUrlOptions, v as StoredImageUrlResolver, w as StoredImageUrlResolverOptions, T as TemplateViewport, x as addCookieConsentListener, y as clearCookiesForCategory, z as clearGlobalTemplates, B as closeCookieConsent, E as configureAnalytics, F as configureCookieConsent, H as configureResponsiveTemplates, I as configureShop, J as configureShopFooter, K as configureStoredImageUrls, L as currentCookieConsent, N as currentTemplateViewport, P as deleteOrderlyCookie, Q as formatCredit, U as formatCreditParts, V as hasCookieConsent, W as isCookieConsentConfigured, X as openCookieConsentPreferences, Y as pushAnalyticsEvent, Z as pushDataLayer, _ as registerGlobalTemplate, $ as resetAnalytics, a0 as resetCookieConsent, a1 as saveCookieConsent, a2 as setOrderlyCookie, a3 as storedImageUrl, a4 as trackEcommerceEvent, a5 as trackPageView } from './shop-BzYfe7Ma.js';
export { O as ORDERLY_DEFAULT_CSS, a as ORDERLY_LAZY_LOAD_CSS, c as clearOrderlyHydrationFade, i as installOrderlyDefaultStyles, b as installOrderlyLazyLoadStyles } from './define-DgZ4c9lb.js';
import { SearchQuery, SearchObject, Credit, ContinuationToken, PageResult, StoredImage } from '@orderlyshop/core-client';
import { R as ResolvedNavigationItem, h as SortOption, k as BasketDisplayMode, N as NavigationItem, l as CategoryHeroLayout, P as ProductGridPagingMode, m as ProductGridState, g as StorefrontRouterConfig } from './types-CeigwmOf.js';
export { n as BasketChangeEvent, B as BasketChangeReason, d as CategoryDefinition, o as CategoryMetadata, e as CategoryNavigationItem, c as CategoryUrlMode, C as CheckoutProfile, p as CheckoutReadyDetail, b as NavigationDefinition, a as NavigationLayout, f as NavigationMetadata, q as NavigationSelectionDetail, O as OrderCreatedDetail, r as ProductEventDetail, s as SessionDetail, t as StorefrontCategoryRouteMatch, u as StorefrontCheckoutRouteMatch, v as StorefrontClient, w as StorefrontHomeRouteMatch, x as StorefrontPageFactories, y as StorefrontPaymentFailureRouteMatch, z as StorefrontPaymentSuccessRouteMatch, j as StorefrontProductRouteConfig, A as StorefrontProductRouteMatch, i as StorefrontProductUrlMode, S as StorefrontRouteMatch, D as StorefrontRouteMetadata, E as StorefrontStaticRouteConfig, F as StorefrontStaticRouteMatch } from './types-CeigwmOf.js';
import { OrderStore } from './stores.js';
export { BasketStore, CheckoutProfileStore, LocalStorageBasketStore, LocalStorageCheckoutProfileStore, LocalStorageOrderStore, MemoryBasketStore, MemoryCheckoutProfileStore, MemoryOrderStore, checkoutProfileFromDraft, createEmptyDraftOrder, decodeOrderId, defaultBasketStorageKey, defaultCheckoutProfileStorageKey, defaultOrderStorageKey, encodeOrderId, sanitizeCheckoutProfile } from './stores.js';
export { NavigationController, OrderlyNavigationElement, OrderlyNavigationMenuElement, navigationItemsFromUIMenu, navigationItemsFromWebsitePages, navigationPersistsState } from './navigation.js';
export { SearchQueryConfig, SearchQueryInput, createSearchQuery, declarativeQueryAttributes, declarativeSearchQuery, normalizeSearchQuery } from './query.js';
export { D as DefineOrderlyWebComponentsOptions, d as defineOrderlyWebComponents } from './registry-CPDecU3g.js';
export { configureShopSearchQuery, createAccountShopQuery, mergeShopSearchQuery, shopSearchQuery } from './shop-query.js';
export { CategoryDescriptionInput, CategoryNavigationOptions, NavigationBuildOptions, NavigationDescriptionInput, NavigationValidationResult, assertValidNavigationDefinitions, categoryFromUrl, categoryPagePath, createCategoryNavigation, defaultCategoryPageRoot, findCategoryById, findCategoryByIdOrSlug, findCategoryBySlug, flattenCategoryNavigation, navigationConfigurationError, resolveCategoryUrlMode, validateNavigationDefinitions } from './taxonomy.js';
import '@bufbuild/protobuf';

declare class OrderlyBasketElement extends OrderlyElement {
    static observedAttributes: string[];
    private controllerValue;
    private verifyInFlight;
    private verifyPending;
    private mutationRevision;
    get basketController(): BasketController;
    set basketController(value: BasketController);
    get checkoutHref(): string;
    set checkoutHref(value: string);
    get checkoutAction(): "show" | "hide";
    set checkoutAction(value: "show" | "hide");
    get checkoutLabel(): string;
    set checkoutLabel(value: string);
    get checkoutDisabledLabel(): string;
    set checkoutDisabledLabel(value: string);
    get clearLabel(): string;
    set clearLabel(value: string);
    get continueLabel(): string;
    set continueLabel(value: string);
    get continueHref(): string;
    set continueHref(value: string);
    get emptyLabel(): string;
    set emptyLabel(value: string);
    get quantityLabel(): string;
    set quantityLabel(value: string);
    get removeLabel(): string;
    set removeLabel(value: string);
    get subtotalLabel(): string;
    set subtotalLabel(value: string);
    get shippingLabel(): string;
    set shippingLabel(value: string);
    get totalLabel(): string;
    set totalLabel(value: string);
    get totalNote(): string;
    set totalNote(value: string);
    get deliveryNote(): string;
    set deliveryNote(value: string);
    attributeChangedCallback(): void;
    connectedCallback(): void;
    disconnectedCallback(): void;
    protected render(): void;
    private renderEmptyState;
    private renderDraftErrors;
    private summaryState;
    private readonly onChange;
    private requestVerifyDraft;
    private flushVerifyDraft;
}

declare class OrderlyBasketIconElement extends OrderlyElement {
    static observedAttributes: string[];
    private controllerValue;
    get basketController(): BasketController;
    set basketController(value: BasketController);
    get label(): string;
    set label(value: string);
    get href(): string;
    set href(value: string);
    get placement(): "default" | "mobile-fixed";
    set placement(value: "default" | "mobile-fixed");
    get hideWhenEmpty(): boolean;
    set hideWhenEmpty(value: boolean);
    attributeChangedCallback(): void;
    connectedCallback(): void;
    disconnectedCallback(): void;
    protected render(): void;
    private readonly onChange;
}

declare class OrderlyCategoryPageElement extends OrderlyElement {
    static observedAttributes: string[];
    private currentCategory?;
    private currentNavigationItems?;
    private currentSortOptions?;
    private currentDefaultQuery?;
    private controller?;
    private productDialogHistory?;
    get defaultQuery(): SearchQuery | undefined;
    set defaultQuery(value: SearchQuery | undefined);
    get shopQuery(): SearchQuery | undefined;
    set shopQuery(value: SearchQuery | undefined);
    get category(): ResolvedNavigationItem | undefined;
    set category(value: ResolvedNavigationItem | undefined);
    get navigationItems(): ResolvedNavigationItem[];
    set navigationItems(value: ResolvedNavigationItem[]);
    get sortOptions(): SortOption[];
    set sortOptions(value: SortOption[]);
    get basketController(): BasketController | undefined;
    set basketController(value: BasketController | undefined);
    get slug(): string;
    set slug(value: string);
    get brandLabel(): string;
    set brandLabel(value: string);
    get checkoutHref(): string;
    set checkoutHref(value: string);
    get productHref(): string;
    set productHref(value: string);
    get checkoutLabel(): string;
    set checkoutLabel(value: string);
    get searchPlaceholder(): string;
    set searchPlaceholder(value: string);
    get emptyLabel(): string;
    set emptyLabel(value: string);
    get basketMode(): BasketDisplayMode;
    set basketMode(value: BasketDisplayMode);
    connectedCallback(): void;
    disconnectedCallback(): void;
    attributeChangedCallback(): void;
    protected render(): void;
    private configureChildren;
    private applyText;
    private resolveCategory;
    private clientOrUndefined;
    private resolvedNavigationItems;
    private resolvedSortOptions;
    protected getDefaultBaseUrl(): string | undefined;
    private requiredElement;
    private readonly onProductSelected;
    private readonly onAddToBasket;
    private readonly onHashChange;
}

/**
 * Full checkout page composition for vanilla storefronts.
 *
 * The component wraps page layout, top navigation, checkout form, basket order
 * summary, footer, shared basket state, delivery-option loading, and order
 * creation cleanup. Shops can use it as a complete page with
 * `<orderly-checkout-page>` and customize copy through configureDefaultShop().
 */
declare class OrderlyCheckoutPageElement extends OrderlyElement {
    static observedAttributes: string[];
    private controller?;
    private currentNavigationItems?;
    private currentBasketLabels?;
    private currentCheckoutLabels?;
    get basketController(): BasketController | undefined;
    set basketController(value: BasketController | undefined);
    get navigationItems(): NavigationItem[];
    set navigationItems(value: NavigationItem[]);
    get basketLabels(): BasketLabels;
    set basketLabels(value: BasketLabels);
    get checkoutLabels(): CheckoutLabels;
    set checkoutLabels(value: CheckoutLabels);
    get brandLabel(): string;
    set brandLabel(value: string);
    get title(): string;
    set title(value: string);
    get description(): string;
    set description(value: string);
    get orderTitle(): string;
    set orderTitle(value: string);
    get termsHref(): string;
    set termsHref(value: string);
    attributeChangedCallback(): void;
    protected render(): void;
    protected getDefaultBaseUrl(): string | undefined;
    private configureChildren;
    private applyText;
    private clientOrUndefined;
    private requiredElement;
}

/**
 * Collection page wrapper for hero content plus a SearchQuery-backed product grid.
 *
 * The page stays headless: it owns data wiring, default query propagation, and
 * template slots, while consuming shops own visual CSS and layout decisions.
 */
declare class OrderlyCollectionPageElement extends OrderlyElement {
    static observedAttributes: string[];
    private currentQuery?;
    private currentDefaultQuery?;
    private controller?;
    private currentSortOptions;
    private currentInitialProducts?;
    private currentHeroProducts?;
    /**
     * Optional shop-wide SearchQuery scope passed to the internal product grid.
     */
    get defaultQuery(): SearchQuery | undefined;
    set defaultQuery(value: SearchQuery | undefined);
    /**
     * Backward-compatible alias for defaultQuery.
     */
    get shopQuery(): SearchQuery | undefined;
    set shopQuery(value: SearchQuery | undefined);
    /**
     * Typed Core SearchQuery for the collection grid.
     *
     * When omitted, the page falls back to declarative query markup such as
     * `keywords`, `tags`, `order-by`, or a direct child `<query>` element.
     */
    get query(): SearchQuery | undefined;
    set query(value: SearchQuery | undefined);
    /**
     * Shared basket controller passed to the internal product grid.
     */
    get basketController(): BasketController | undefined;
    set basketController(value: BasketController | undefined);
    /**
     * Sort choices passed to the internal product grid.
     */
    get sortOptions(): SortOption[];
    set sortOptions(value: SortOption[]);
    get initialProducts(): SearchObject[] | undefined;
    set initialProducts(value: SearchObject[] | undefined);
    get title(): string;
    set title(value: string);
    get description(): string;
    set description(value: string);
    get heroImage(): string;
    set heroImage(value: string);
    get heroLayout(): CategoryHeroLayout;
    set heroLayout(value: CategoryHeroLayout);
    get heroCoverCount(): number;
    set heroCoverCount(value: number);
    get ctaLabel(): string;
    set ctaLabel(value: string);
    get ctaHref(): string;
    set ctaHref(value: string);
    attributeChangedCallback(): void;
    protected render(): void;
    private createGrid;
    private heroProductsForCovers;
    private updateRenderedHeroCovers;
    private readonly onGridResults;
}

declare class OrderlyCreditElement extends OrderlyElement {
    static observedAttributes: string[];
    private currentCredit?;
    get credit(): Credit | undefined;
    set credit(value: Credit | undefined);
    get amount(): number | undefined;
    set amount(value: number | undefined);
    get currency(): string;
    set currency(value: string);
    get locale(): string;
    set locale(value: string);
    get emptyLabel(): string;
    set emptyLabel(value: string);
    attributeChangedCallback(): void;
    protected render(): void;
    private resolvedCredit;
}

/**
 * Default storefront homepage composed from configured category navigation.
 *
 * It renders one horizontal product rail per top-level category and wires shared
 * basket state, basket drawer behavior, and product detail dialog behavior.
 */
declare class OrderlyHomePageElement extends OrderlyElement {
    static observedAttributes: string[];
    private currentNavigationItems?;
    private currentSortOptions?;
    private currentDefaultQuery?;
    private currentBasketLabels?;
    private controller?;
    private productDialogHistory?;
    get defaultQuery(): SearchQuery | undefined;
    set defaultQuery(value: SearchQuery | undefined);
    get navigationItems(): ResolvedNavigationItem[];
    set navigationItems(value: ResolvedNavigationItem[]);
    get sortOptions(): SortOption[];
    set sortOptions(value: SortOption[]);
    get basketLabels(): BasketLabels;
    set basketLabels(value: BasketLabels);
    get basketController(): BasketController | undefined;
    set basketController(value: BasketController | undefined);
    get brandLabel(): string;
    set brandLabel(value: string);
    get eyebrow(): string;
    set eyebrow(value: string);
    get title(): string;
    set title(value: string);
    get railCtaLabel(): string;
    set railCtaLabel(value: string);
    get emptyLabel(): string;
    set emptyLabel(value: string);
    get checkoutHref(): string;
    set checkoutHref(value: string);
    get productHref(): string;
    set productHref(value: string);
    get checkoutLabel(): string;
    set checkoutLabel(value: string);
    get basketMode(): BasketDisplayMode;
    set basketMode(value: BasketDisplayMode);
    connectedCallback(): void;
    disconnectedCallback(): void;
    attributeChangedCallback(): void;
    protected render(): void;
    protected getDefaultBaseUrl(): string | undefined;
    private configureChildren;
    private createRail;
    private clientOrUndefined;
    private requiredElement;
    private readonly onProductSelected;
    private readonly onAddToBasket;
}

type PaymentResultKind = "success" | "failure";
declare abstract class OrderlyPaymentResultPageElement extends OrderlyElement {
    static observedAttributes: string[];
    private currentOrderStore;
    private currentNavigationItems?;
    private loadedOrderIdParam;
    private order?;
    private loadingOrder;
    private paymentResultEventKey;
    protected abstract readonly kind: PaymentResultKind;
    get orderStore(): OrderStore;
    set orderStore(value: OrderStore);
    get navigationItems(): NavigationItem[];
    set navigationItems(value: NavigationItem[]);
    get orderIdParam(): string;
    set orderIdParam(value: string);
    get brandLabel(): string;
    set brandLabel(value: string);
    connectedCallback(): void;
    attributeChangedCallback(name: string): void;
    protected render(): void;
    private get componentName();
    private loadOrder;
    private applyText;
    private dispatchPaymentResultEvent;
    private configureChildren;
    private get titleText();
    private get descriptionText();
    private get emptyText();
    private get paymentLink();
}
declare class OrderlyPaymentSuccessPageElement extends OrderlyPaymentResultPageElement {
    protected readonly kind = "success";
}
declare class OrderlyPaymentFailurePageElement extends OrderlyPaymentResultPageElement {
    protected readonly kind = "failure";
}

/**
 * Full product detail page composition for vanilla storefronts.
 *
 * The component resolves a SearchObject through SearchService.Search using
 * SearchQuery.ShareUrl, then renders the reusable product detail component inside
 * the default page layout with navigation, basket drawer, and footer.
 */
declare class OrderlyProductDetailPageElement extends OrderlyElement {
    static observedAttributes: string[];
    private controller?;
    private currentNavigationItems?;
    private currentBasketLabels?;
    private currentDefaultQuery?;
    private currentProduct?;
    private loadedShareUrl?;
    private loading;
    private error;
    private loadRevision;
    get shareUrl(): string;
    set shareUrl(value: string);
    get product(): SearchObject | undefined;
    set product(value: SearchObject | undefined);
    get defaultQuery(): SearchQuery | undefined;
    set defaultQuery(value: SearchQuery | undefined);
    get shopQuery(): SearchQuery | undefined;
    set shopQuery(value: SearchQuery | undefined);
    get basketController(): BasketController | undefined;
    set basketController(value: BasketController | undefined);
    get navigationItems(): NavigationItem[];
    set navigationItems(value: NavigationItem[]);
    get basketLabels(): BasketLabels;
    set basketLabels(value: BasketLabels);
    get brandLabel(): string;
    set brandLabel(value: string);
    get checkoutHref(): string;
    set checkoutHref(value: string);
    get checkoutLabel(): string;
    set checkoutLabel(value: string);
    get addLabel(): string;
    set addLabel(value: string);
    get inBasketLabel(): string;
    set inBasketLabel(value: string);
    get loadingLabel(): string;
    set loadingLabel(value: string);
    get notFoundLabel(): string;
    set notFoundLabel(value: string);
    get errorLabel(): string;
    set errorLabel(value: string);
    get basketMode(): BasketDisplayMode;
    set basketMode(value: BasketDisplayMode);
    refresh(): void;
    connectedCallback(): void;
    disconnectedCallback(): void;
    attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
    protected render(): void;
    protected getDefaultBaseUrl(): string | undefined;
    private configureChildren;
    private applyText;
    private loadProduct;
    private ensureProductLoaded;
    private resetProductLoad;
    private statusText;
    private resolvedShareUrl;
    private clientOrUndefined;
    private requiredElement;
    private readonly onAddToBasket;
    private readonly onHashChange;
}

/**
 * Search-backed product grid for storefront category and collection pages.
 *
 * The grid accepts typed SearchQuery objects, supports simple declarative query
 * markup, merges a configured default shop query, owns sorting, and handles
 * ContinuationToken paging for button, manual, and dynamic/infinite modes.
 */
declare class OrderlyProductGridElement extends OrderlyElement {
    static observedAttributes: string[];
    private currentQuery?;
    private currentDefaultQuery?;
    private currentProducts;
    private continuation?;
    private loading;
    private error;
    private observer?;
    private totalCount;
    private estimatedTotalCount?;
    private controller?;
    private currentSortOptions;
    private currentInitialProducts?;
    private initialProductsConsumed;
    /**
     * Paging behavior for continuation-token results.
     *
     * `button` renders a load-more button, `manual` exposes loadNextPage() only,
     * and `dynamic`/`infinite` load the next page when the sentinel enters view.
     */
    paging: ProductGridPagingMode;
    /**
     * Tag name used when the grid creates default product tile elements.
     */
    productTileTagName: string;
    /**
     * Optional shop-wide SearchQuery scope merged into every grid request.
     */
    get defaultQuery(): SearchQuery | undefined;
    set defaultQuery(value: SearchQuery | undefined);
    /**
     * Backward-compatible alias for defaultQuery.
     */
    get shopQuery(): SearchQuery | undefined;
    set shopQuery(value: SearchQuery | undefined);
    /**
     * Available sort choices rendered by the grid's sort control.
     */
    get sortOptions(): SortOption[];
    set sortOptions(value: SortOption[]);
    get sortLabel(): string;
    set sortLabel(value: string);
    get clearSearchLabel(): string;
    set clearSearchLabel(value: string);
    get errorLabel(): string;
    set errorLabel(value: string);
    get loadingLabel(): string;
    set loadingLabel(value: string);
    get resultsLabel(): string;
    set resultsLabel(value: string);
    get searchingLabel(): string;
    set searchingLabel(value: string);
    /**
     * Shared basket controller assigned to product tiles rendered by this grid.
     */
    get basketController(): BasketController | undefined;
    set basketController(value: BasketController | undefined);
    /**
     * Typed Core SearchQuery for SearchService.Search.
     *
     * When omitted, the grid falls back to declarative query markup such as
     * `keywords`, `tags`, `order-by`, or a direct child `<query>` element.
     */
    get query(): SearchQuery | undefined;
    set query(value: SearchQuery | undefined);
    get products(): SearchObject[];
    set products(value: SearchObject[]);
    get initialProducts(): SearchObject[] | undefined;
    set initialProducts(value: SearchObject[] | undefined);
    get continuationToken(): ContinuationToken | undefined;
    get hasMore(): boolean;
    get state(): ProductGridState;
    connectedCallback(): void;
    disconnectedCallback(): void;
    attributeChangedCallback(name: string): void;
    /**
     * Clears current results and loads the first page for the resolved query.
     */
    refresh(): Promise<void>;
    /**
     * Loads the next continuation-token page when one is available.
     */
    loadNextPage(): Promise<void>;
    /**
     * Applies an OrderBy array to a cloned query and reloads the grid.
     */
    setSort(orderBy: string[]): Promise<void>;
    /**
     * Clears the visible Query text on a cloned query and reloads the grid.
     */
    clearSearch(): Promise<void>;
    protected render(): void;
    private renderProducts;
    private fetchPage;
    private consumeInitialProducts;
    private hasLiveSearchTarget;
    private hideInitialMarkup;
    private renderProduct;
    private renderSort;
    private renderContext;
    private selectedSortIndex;
    private resolvedQuery;
    private configureSortContainer;
    private configureLoadMore;
    private configureInfiniteScroll;
}
declare function hasContinuationToken(token: ContinuationToken | undefined): boolean;
declare function unpackProducts(result: PageResult): SearchObject[];

declare class OrderlyProductPageElement extends OrderlyElement {
    static observedAttributes: string[];
    private static readonly imageOverlayMinZoom;
    private static readonly imageOverlayMaxZoom;
    private static readonly imageOverlayZoomStep;
    private currentProduct?;
    private currentImageIndex;
    private imageOverlayOpen;
    private imageOverlayZoom;
    private imageOverlayZoomOrigin;
    private imageOverlayClickTimeout?;
    private imageOverlayPortal?;
    private readonly imageOverlayHistoryId;
    private productViewEventKey;
    private controller?;
    private readonly onBasketChange;
    private readonly onImageOverlayPopState;
    get basketController(): BasketController | undefined;
    set basketController(value: BasketController | undefined);
    get product(): SearchObject | undefined;
    set product(value: SearchObject | undefined);
    get selectedImageIndex(): number;
    set selectedImageIndex(value: number);
    get addLabel(): string;
    set addLabel(value: string);
    get inBasketLabel(): string;
    set inBasketLabel(value: string);
    get imageViewer(): boolean;
    set imageViewer(value: boolean);
    connectedCallback(): void;
    attributeChangedCallback(): void;
    disconnectedCallback(): void;
    protected render(): void;
    private dispatchProductViewEvent;
    private selectedImage;
    private normalizedImageIndex;
    private selectImage;
    private configureImageViewer;
    private configureImageViewerTriggers;
    private openImageOverlay;
    private closeImageOverlay;
    private openImageOverlayFromHistory;
    private closeImageOverlayFromHistory;
    private pushImageOverlayHistoryEntry;
    private isCurrentImageOverlayEntry;
    private adjustImageOverlayZoom;
    private setImageOverlayZoom;
    private setImageOverlayZoomOrigin;
    private applyImageOverlayZoom;
    private applyImageOverlayPresentation;
    private clearImageOverlayClickTimeout;
    private portalImageOverlay;
    private removeImageOverlayPortal;
    private imageOverlayPortalTarget;
    private zoomOriginFromPointer;
    private updateImageOverlayLock;
    private renderThumbnails;
}

/**
 * Horizontal product list for homepages and editorial collection sections.
 *
 * The rail composes an internal ProductGrid, so it supports the same typed
 * SearchQuery model, default query merging, declarative query attributes, basket
 * controller wiring, and template override conventions as the grid.
 */
declare class OrderlyProductRailElement extends OrderlyElement {
    static observedAttributes: string[];
    private currentQuery?;
    private currentDefaultQuery?;
    private controller?;
    /**
     * Optional shop-wide SearchQuery scope merged into this rail's query.
     *
     * Use this for tenant/account filters or other default restrictions. It is
     * cloned and merged by the internal product grid before SearchService.Search.
     */
    get defaultQuery(): SearchQuery | undefined;
    set defaultQuery(value: SearchQuery | undefined);
    /**
     * Backward-compatible alias for defaultQuery.
     */
    get shopQuery(): SearchQuery | undefined;
    set shopQuery(value: SearchQuery | undefined);
    /**
     * Typed Core SearchQuery for the rail.
     *
     * When omitted, the element falls back to declarative query markup such as
     * `keywords`, `tags`, `order-by`, or a direct child `<query>` element.
     */
    get query(): SearchQuery | undefined;
    set query(value: SearchQuery | undefined);
    /**
     * Shared basket controller passed to rendered product tiles.
     */
    get basketController(): BasketController | undefined;
    set basketController(value: BasketController | undefined);
    get title(): string;
    set title(value: string);
    get ctaLabel(): string;
    set ctaLabel(value: string);
    get ctaHref(): string;
    set ctaHref(value: string);
    get emptyLabel(): string;
    set emptyLabel(value: string);
    get loadingLabel(): string;
    set loadingLabel(value: string);
    get errorLabel(): string;
    set errorLabel(value: string);
    attributeChangedCallback(): void;
    protected render(): void;
    protected getDefaultBaseUrl(): string | undefined;
    private createGrid;
    private configureGrid;
}

declare class OrderlyProductTileElement extends OrderlyElement {
    static observedAttributes: string[];
    private currentProduct?;
    private controller?;
    private readonly onBasketChange;
    get basketController(): BasketController | undefined;
    set basketController(value: BasketController | undefined);
    get product(): SearchObject | undefined;
    set product(value: SearchObject | undefined);
    get addLabel(): string;
    set addLabel(value: string);
    get removeLabel(): string;
    set removeLabel(value: string);
    connectedCallback(): void;
    disconnectedCallback(): void;
    attributeChangedCallback(): void;
    protected render(): void;
    private readonly onHostClick;
    private readonly onHostKeyDown;
}
declare function bindProduct(root: ParentNode, product: SearchObject | undefined, options?: {
    inBasket?: boolean;
}): void;
declare function productShareUrl(product: SearchObject | undefined): string;
declare function productShareHref(baseHref: string | null, shareUrl: string): string;
declare function compactProductShareUrl(shareUrl: string): string;

type SearchBoxMode = "textbox" | "icon";
declare class OrderlySearchBoxElement extends OrderlyElement {
    static observedAttributes: string[];
    grid?: OrderlyProductGridElement;
    private currentQuery?;
    private currentDefaultQuery?;
    private controller?;
    private overlayOpen;
    private inputValue;
    private activeSearchText;
    private debounceTimer?;
    private overlayPortal?;
    get query(): SearchQuery | undefined;
    set query(value: SearchQuery | undefined);
    get defaultQuery(): SearchQuery | undefined;
    set defaultQuery(value: SearchQuery | undefined);
    get shopQuery(): SearchQuery | undefined;
    set shopQuery(value: SearchQuery | undefined);
    get basketController(): BasketController | undefined;
    set basketController(value: BasketController | undefined);
    get mode(): SearchBoxMode;
    set mode(value: SearchBoxMode);
    get placeholder(): string;
    set placeholder(value: string);
    get label(): string;
    set label(value: string);
    get closeLabel(): string;
    set closeLabel(value: string);
    get promptLabel(): string;
    set promptLabel(value: string);
    get loadingLabel(): string;
    set loadingLabel(value: string);
    get errorLabel(): string;
    set errorLabel(value: string);
    get emptyLabel(): string;
    set emptyLabel(value: string);
    get debounceMs(): number;
    set debounceMs(value: number);
    disconnectedCallback(): void;
    attributeChangedCallback(name: string): void;
    protected render(): void;
    protected getDefaultBaseUrl(): string | undefined;
    private configureSearch;
    private portalOverlay;
    private overlayPortalTarget;
    private removeOverlayPortal;
    private renderOverlayResults;
    private createOverlayGrid;
    private searchQuery;
    private searchStatusText;
    private scheduleSearch;
    private commitSearch;
    private clearDebounce;
    private applySearch;
    private openOverlay;
    private closeOverlay;
    private updateOverlayLock;
    private focusInput;
    private resolveGrid;
    private forwardProductSelected;
}
declare class OrderlySortSelectElement extends OrderlyElement {
    grid?: OrderlyProductGridElement;
    options: SortOption[];
    protected render(): void;
    private resolveGrid;
}
declare class OrderlyFilterPanelElement extends OrderlyElement {
    grid?: OrderlyProductGridElement;
    protected render(): void;
}
declare class OrderlyLoadMoreElement extends OrderlyElement {
    grid?: OrderlyProductGridElement;
    protected render(): void;
    private resolveGrid;
}

declare class OrderlyStoredImageElement extends OrderlyElement {
    static observedAttributes: string[];
    private currentImage?;
    get image(): StoredImage | undefined;
    set image(value: StoredImage | undefined);
    get alt(): string;
    set alt(value: string);
    get fit(): "cover" | "contain";
    set fit(value: "cover" | "contain");
    get variant(): StoredImageUrlVariant;
    set variant(value: StoredImageUrlVariant);
    get imageRole(): StoredImageRole;
    set imageRole(value: StoredImageRole);
    get border(): boolean;
    set border(value: boolean);
    attributeChangedCallback(): void;
    protected render(): void;
}
interface StoredImagePresentation {
    aspectRatio?: string;
    hasCrop: boolean;
    left: string;
    top: string;
    width: string;
    height: string;
    objectFit: "cover" | "contain" | "fill";
    transform: string;
    transformOrigin: string;
}
declare function imagePresentation(image: StoredImage, options?: {
    crop?: boolean;
}): StoredImagePresentation;

declare function readSsrProduct(root: ParentNode): SearchObject | undefined;
declare function readSsrProducts(root: ParentNode): SearchObject[];

declare function configureStorefrontRouter(config: StorefrontRouterConfig | undefined, options?: {
    tagPrefix?: string;
}): void;
declare function resetStorefrontRouter(): void;

export { BasketController, BasketDisplayMode, BasketLabels, CategoryHeroLayout, CheckoutLabels, NavigationItem, OrderStore, OrderlyBasketElement, OrderlyBasketIconElement, OrderlyCategoryPageElement, OrderlyCheckoutPageElement, OrderlyCollectionPageElement, OrderlyCreditElement, OrderlyElement, OrderlyFilterPanelElement, OrderlyHomePageElement, OrderlyLoadMoreElement, OrderlyPaymentFailurePageElement, OrderlyPaymentSuccessPageElement, OrderlyProductDetailPageElement, OrderlyProductGridElement, OrderlyProductPageElement, OrderlyProductRailElement, OrderlyProductTileElement, OrderlySearchBoxElement, OrderlySortSelectElement, OrderlyStoredImageElement, ProductGridPagingMode, ProductGridState, ResolvedNavigationItem, type SearchBoxMode, SortOption, type StoredImagePresentation, StoredImageRole, StoredImageUrlVariant, StorefrontRouterConfig, bindProduct, compactProductShareUrl, configureStorefrontRouter, hasContinuationToken, imagePresentation, productShareHref, productShareUrl, readSsrProduct, readSsrProducts, resetStorefrontRouter, unpackProducts };
