import { XapiProduct } from "../XapiProduct";
import { Product } from "@selldone/core-js/models/shop/product/product.model";
import { Currency } from "@selldone/core-js/enums/payment/Currency";
import { Category } from "@selldone/core-js/models/shop/category/category.model";
import type { Article } from "@selldone/core-js/models/article/article.model";
import { CrossSelling } from "@selldone/core-js/models/shop/cross-selling/cross-sell.model";
import { ProductVariant } from "@selldone/core-js";
/**
 * Language of returned article determine by 'X-Localization' in the header.
 *
 * @param product_id
 * @param options
 */
export default function XapiProductGet(this: XapiProduct, product_id: string | number, options?: XapiProductGetTypes.IOptions): Promise<XapiProductGetTypes.IResponse>;
export declare namespace XapiProductGetTypes {
    interface IResponse {
        product: Product & {
            article_pack: {
                article?: (Article & {
                    tags: string[];
                }) | null;
                can_edit?: boolean;
                liked?: boolean;
                stared?: boolean;
                follow?: boolean;
                catch_power?: boolean;
                reported?: boolean;
            };
            categories?: Pick<Category, "id" | "title" | "name" | "description" | "parent_id" | "icon">[];
            ross_sells?: Pick<CrossSelling, any> & {
                target: Pick<Product, "id" | "type" | "title" | "title_en" | "icon" | "price" | "currency">;
                product_variants: Pick<ProductVariant, "id" | "product_id" | "color" | "style" | "volume" | "weight" | "pack" | "type" | "pricing" | "price" | "quantity" | "image">[];
            };
        };
        campaign_id: number | null;
        link_id: number | null;
        "preferred-language": keyof typeof Currency;
        /**
         * @deprecated
         * Now categories will be in the product object!
         */
        categories?: Pick<Category, "id" | "title" | "name" | "description" | "parent_id" | "icon">[];
        vendors?: IVendorOptions[];
    }
    interface IVendorOptions {
        id: number;
        name: string;
        description: string;
        icon: string;
        variant_id: number;
        price: number;
        currency: string;
        commission: number;
        discount: number;
        dis_start: Date;
        dis_end: Date;
        quantity: number;
        lead: number;
        page_id: number;
    }
    /**
     * Interface representing product options.
     *
     * @see getFilteredProducts for more details.
     */
    interface IOptions {
        "augmented-categories"?: number;
        "augmented-cross-sells"?: boolean;
        no_article?: boolean;
    }
}
