import { BilliaSDKServiceBase } from '../lib/billia-sdk-service-base';
import { IRestPaginatedResource, IRestPaginationQuery } from '../types/common';
import { ICalculatedCatalogProductPrices, ICatalogProductSuggestions } from './billia-sdk-catalog.types';
import { ICatalogCategory, ICatalogProduct } from './billia-sdk.types';
import { IBilliaOAuthSession } from '../types';
export declare class BilliaSDKCatalog extends BilliaSDKServiceBase {
    /**
     * Get top-level categories
     */
    getTopLevelCategories(): Promise<ICatalogCategory[]>;
    /**
     * Get all product categories.
     * Optionally you can filter categories by providing a list of category IDs.
     */
    getAllCategories(categoryIds?: number[]): Promise<IRestPaginatedResource<ICatalogCategory>>;
    /**
     * Get category by ID
     *
     * @param categoryId the category ID
     */
    getCategoryById(categoryId: number): Promise<ICatalogCategory>;
    /**
     * Get catalog product.
     *
     * @param id catalog product ID
     * @param session user session
     */
    getCatalogProduct(id: number, session: IBilliaOAuthSession): Promise<ICatalogProduct>;
    /**
     * Get catalog products by category.
     *
     * @param categoryId the category ID
     * @param session user session
     * @param subcategoryItems whether to include products from subcategories
     */
    getProductsByCategory(categoryId: number, session: IBilliaOAuthSession, subcategoryItems?: boolean): Promise<IRestPaginatedResource<ICatalogProduct>>;
    /**
     * Get catalog products
     * @param ids catalog product IDs list
     * @param pagination pagination query object
     * @param options options for listing products
     */
    getCatalogProducts(ids?: number[], pagination?: IRestPaginationQuery, options?: any, session?: IBilliaOAuthSession): Promise<IRestPaginatedResource<ICatalogProduct>>;
    /**
     * Lists the catalog product prices for a specified set of quantities/periods.
     *
     * @param productId the catalog product ID
     * @param quantities list of quantities for which prices will be calculated
     * @param session user session
     * @returns hash-map of quantity -> price relations
     */
    productCalculator(productId: number, quantities: number[] | undefined, session: IBilliaOAuthSession): Promise<ICalculatedCatalogProductPrices>;
    /**
     * Gets all Domain products.
     *
     * @param session user session
     */
    getDomainProducts(session: IBilliaOAuthSession): Promise<ICatalogProduct[]>;
    /**
     * Gets all TLDs.
     */
    getAllTlds(session: IBilliaOAuthSession): Promise<string[]>;
    /**
     * Get suggested products
     *
     * @param id catalog product ID
     * @param session user session
     * @param options catalog products fetch options object
     */
    getSuggestedProducts(id: number, session: IBilliaOAuthSession, options?: any): Promise<ICatalogProduct[]>;
    /**
     * Get product suggestions
     *
     * @param items list of product IDs
     * @param session user session
     * @param visibility resource visibility string
     * @param images whether to include product images
     */
    getProductSuggestions(items: any, session: IBilliaOAuthSession, visibility?: string[] | string, images?: boolean): Promise<ICatalogProductSuggestions>;
    /**
     * Get product upgrades
     *
     * @param productId catalog product ID
     * @param session user session
     */
    getProductUpgrades(productId: number, session: IBilliaOAuthSession): Promise<IRestPaginatedResource<ICatalogProduct>>;
    /**
     * Get catalog products by category or by list of categories.
     *
     * @param categoryId category ID or a list of category IDs
     * @param session user session
     */
    private _getProductsByCategory;
}
//# sourceMappingURL=billia-sdk-catalog.d.ts.map