import { type Product } from '@coveo/headless/commerce';
import { LitElement, nothing } from 'lit';
import type { InitializableComponent } from '../../../decorators/types';
import type { CommerceBindings as Bindings } from '../atomic-commerce-interface/atomic-commerce-interface';
/**
 * The `atomic-product-image` component renders an image from a product field. When the product has multiple images, it displays a carousel with navigation buttons and indicators.
 *
 * @part product-image - The image element that displays the product image.
 * @part previous-button - The container for the previous image button in the carousel.
 * @part next-button - The container for the next image button in the carousel.
 * @part next-icon - The icon for the next image button in the carousel.
 * @part previous-icon - The icon for the previous image button in the carousel.
 * @part indicators - The container for the carousel indicators.
 * @part indicator - The individual indicator for each image in the carousel.
 * @part active-indicator - The currently active indicator in the carousel.
 */
export declare class AtomicProductImage extends LitElement implements InitializableComponent<Bindings> {
    bindings: Bindings;
    productController: import("../../common/item-list/context/item-context-controller").ItemContextController<Product>;
    private product;
    error: Error;
    private useFallback;
    private currentImage;
    private isFallbackMissing;
    initialize(): void;
    /**
     * The product field which the component should use. This will look for the field in the product object first, then in the product.additionalFields object.
     */
    field: string;
    /**
     * The product field that contains the alt text for the images. This will look for the field in the product object first, then in the product.additionalFields object.
     * If the product has multiple images, the value of the `imageAltField` will be used as the alt text for every image.
     *
     * If the field is not specified, or does not contain a valid value, the alt text will be set to "Image {index} out of {totalImages} for {productName}".
     */
    imageAltField?: string;
    /**
     * An fallback image URL that will be used in case the specified image is not available or an error is encountered.
     */
    fallback: string;
    private previousImage;
    private nextImage;
    private navigateToImage;
    private logWarning;
    private handleImageError;
    private handleMissingFallback;
    private validateUrl;
    private filterValidImageUrls;
    private getAltText;
    private buildImage;
    private get images();
    private get imageUrls();
    private get imageAlt();
    private get numberOfImages();
    private renderCurrentImage;
    render(): import("lit-html").TemplateResult<1> | typeof nothing;
}
declare global {
    interface HTMLElementTagNameMap {
        'atomic-product-image': AtomicProductImage;
    }
}
