import { IApihawkSession } from '@apihawk/connector';
import { BilliaSDKServiceBase } from '../lib/billia-sdk-service-base';
import { IAffiliateCommissionEntity, IAffiliateEntity, IAffiliateMultiTierLevelEntity, IDiscountProductEntity, IDiscountPromocodeEntity } from './billia-sdk-affiliate.types';
import { IRestPaginatedResource } from '../types/common';
export declare class BilliaSDKAffiliate extends BilliaSDKServiceBase {
    /**
     * Get affiliate status
     * @param {IApihawkSession} session
     * @returns {Promise<IAffiliateEntity>}
     */
    getStatus(session: IApihawkSession): Promise<IAffiliateEntity>;
    /**
     * Get affiliate commissions
     * @param {IApihawkSession} session
     * @param query
     * @returns {Promise<IRestPaginatedResource<IAffiliateCommissionEntity>>}
     */
    getAffiliateCommission(session: IApihawkSession, query?: {
        page?: number;
        page_size?: number;
    }): Promise<IRestPaginatedResource<IAffiliateCommissionEntity>>;
    /**
     * Get affiliate multi-tier level
     * @param {IApihawkSession} session
     * @param query
     * @returns {Promise<IRestPaginatedResource<IAffiliateMultiTierLevelEntity>>}
     */
    getAffiliateMultiTierLevel(session: IApihawkSession, query?: {
        page?: number;
        page_size?: number;
        type?: string;
        level?: number;
        productIds?: number[];
    }): Promise<IRestPaginatedResource<IAffiliateMultiTierLevelEntity>>;
    /**
     * Sign up for affiliate program
     * @param {IApihawkSession} session
     * @param {number} userId
     * @returns {Promise<IAffiliateEntity>}
     */
    signUp(session: IApihawkSession, userId: number): Promise<IAffiliateEntity>;
    /**
     * Get promocode
     * @param {IApihawkSession} session
     * @param {string} promocode
     * @returns {Promise<IDiscountPromocodeEntity>}
     */
    getPromocode(session: IApihawkSession, promocode: string): Promise<IDiscountPromocodeEntity>;
    /**
     * Get affiliate promocodes
     * @param {IApihawkSession} session
     * @param query
     * @returns {Promise<IRestPaginatedResource<IDiscountPromocodeEntity>>}
     */
    getAffiliatePromocodes(session: IApihawkSession, query?: {
        page?: number;
        page_size?: number;
        affiliate_id?: number;
        affiliate_type?: string;
        affiliate_level?: number;
    }): Promise<IRestPaginatedResource<IDiscountPromocodeEntity>>;
    /**
     * Create promocode
     * @param {IApihawkSession} session
     * @param {IDiscountPromocodeEntity} data
     * @param {any[]} products
     * @returns {Promise<IDiscountPromocodeEntity>}
     */
    createPromocode(session: IApihawkSession, data: IDiscountPromocodeEntity, products?: any[]): Promise<IDiscountPromocodeEntity>;
    /**
     * Update promocode
     * @param {IApihawkSession} session
     * @param {IDiscountPromocodeEntity} data
     * @param {any[]} products
     * @param {any[]} productsToRemove
     * @returns {Promise<IDiscountPromocodeEntity>}
     */
    updatePromocode(session: IApihawkSession, data: IDiscountPromocodeEntity, products?: any[], productsToRemove?: any[]): Promise<IDiscountPromocodeEntity>;
    /**
     * Create discounts for the provided products with promocode and amount
     * @param {IApihawkSession} session
     * @param {any[]} products
     * @param {string} promocode
     * @returns {Promise<IDiscountProductEntity[]>}
     */
    createDiscounts(session: IApihawkSession, products: any[], promocode?: string): Promise<IDiscountProductEntity[]>;
    /**
     * Remove discounts
     * @param {IApihawkSession} session
     * @param {any[]} data
     * @returns {Promise<IDiscountProductEntity[]>}
     */
    deleteDiscounts(session: IApihawkSession, data: any[]): Promise<IDiscountProductEntity[]>;
    /**
     * Update discount amount
     * @param {IApihawkSession} session
     * @param data
     * @returns {Promise<IDiscountProductEntity>}
     */
    updateDiscountProduct(session: IApihawkSession, data: {
        discount_id: string;
        discount: string;
    }): Promise<IDiscountProductEntity>;
    /**
     * Get promocode products
     * @param {IApihawkSession} session
     * @param {string[]} promocodes
     * @param affiliateType
     * @param affiliateLevel
     * @returns {Promise<IRestPaginatedResource<IDiscountPromocodeProductsEntity>>}
     */
    private getPromocodeProducts;
    /**
     * Get catalog products fitered by product_id
     * @param {IApihawkSession} session
     * @param {Array<string | number>} productIds
     * @returns {Promise<IZendRestPaginatedResource<ICatalogProduct>>}
     */
    private getCatalogProducts;
    /**
     * Get promocode discounts filtered by discount_id
     * @param {IApihawkSession} session
     * @param {Array<string | number>} discountIds
     * @returns {Promise<any>}
     */
    private getPromocodeDiscounts;
}
//# sourceMappingURL=billia-sdk-affiliate.d.ts.map