import { Component, ScopeBase } from "@ribajs/core";
import { ShopifyProductVariant, ShopifyProduct, ShopifyProductVariantOption } from "@ribajs/shopify";
export interface Scope extends ScopeBase {
    handle: string | null;
    product: ShopifyProduct | null;
    variant: ShopifyProductVariant | null;
    quantity: number;
    showDetailMenu: boolean;
    detailMenuPadding: string;
    chooseOption: ShopifyProductItemComponent["chooseOption"];
    addToCart: ShopifyProductItemComponent["addToCart"];
    toggleDetailMenu: ShopifyProductItemComponent["toggleDetailMenu"];
    decrease: ShopifyProductItemComponent["decrease"];
    increase: ShopifyProductItemComponent["increase"];
    colorOption: ShopifyProductVariantOption | null;
    sizeOption: ShopifyProductVariantOption | null;
    available: boolean;
}
export declare class ShopifyProductItemComponent extends Component {
    static tagName: string;
    protected autobind: boolean;
    static get observedAttributes(): string[];
    protected requiredAttributes(): string[];
    scope: Scope;
    private selectedOptions;
    private _menuPadding;
    private optionChosen;
    protected set menuPadding(padding: number);
    protected set available(available: boolean);
    protected set showMenu(show: boolean);
    protected get showMenu(): boolean;
    protected set product(product: ShopifyProduct | null);
    protected get product(): ShopifyProduct | null;
    protected set variant(variant: ShopifyProductVariant | null);
    protected get variant(): ShopifyProductVariant | null;
    constructor();
    protected connectedCallback(): void;
    chooseOption(optionValue: string | number, position1: number, optionName: string, event: MouseEvent): void;
    addToCart(): void;
    toggleDetailMenu(): void;
    increase(): void;
    decrease(): void;
    protected activateOption(optionValue: string, optionName: string): void;
    protected activateOptions(): void;
    protected beforeBind(): Promise<void>;
    protected fetchProduct(handle: string): Promise<ShopifyProduct>;
    protected parsedAttributeChangedCallback(attributeName: string, oldValue: any, newValue: any, namespace: string | null): void;
    protected afterBind(): Promise<void>;
    protected template(): Promise<string | null>;
}
