import { IPromoCodeDetails } from '@roomstay/core';
import { Addon } from './Addon/Addon';
import { HotelFee, ItemisedFee } from './Fee';
export default class BasketAddonRow {
    private readonly uniqId;
    private addon;
    private quantity;
    private adultQuantity;
    private childQuantity;
    private selectedDate;
    private selectedTime;
    private numberOfAvailableNights;
    constructor(addon?: Addon);
    getAddon(): Addon;
    getSelectedDate(): string;
    getSelectedTime(): string;
    getQuantity(): number;
    getAdultQuantity(): number;
    getNumberOfAvailableNights(): number;
    private getCalculationParams;
    getTotalFees(): number;
    getTotalPrice(): number;
    getItemisedFees(hotelFees: HotelFee[]): ItemisedFee[];
    /**
     * Returns the subtotal of an addon (without taking into account the nights modifier)
     */
    getAddonSubtotal(): number;
    getTotalQuantity(): number;
    /**
     * This function returns a value that should multiply the total price of the addon for one (assumed) night
     * Depending on the pricing type
     * @returns number
     */
    getNightModifier(): number;
    setAdultQuantity(value: number): void;
    getChildQuantity(): number;
    setChildQuantity(value: number): void;
    getID(): string;
    isValid(): boolean | "";
    setSelectedDate(date: string): void;
    setSelectedTime(time?: string): void;
    setQuantity(quantity: number): void;
    setAddon(addon: Addon): void;
    /**
     * Calculate promo code discount for this addon
     * @param promoCode Promo code information
     * @param remainingFixedDiscount For flatQuantity and flatQuantityPerStay, the remaining discount after room nights consumed their share
     * @returns Discount amount
     */
    getDiscountAmount(promoCode?: IPromoCodeDetails, remainingFixedDiscount?: number): number;
    /**
     * Get total price before any promo code discount
     * @returns Price including fees but before discount
     */
    getPriceBeforeDiscount(): number;
    /**
     * Get total price after promo code discount
     * @param promoCode Promo code information
     * @param remainingFixedDiscount For flatQuantity and flatQuantityPerStay, the remaining discount after room nights consumed their share
     * @returns Final price after discount
     */
    getDiscountedTotalPrice(promoCode?: IPromoCodeDetails, remainingFixedDiscount?: number): number;
    /**
     * Check if this addon has a discount applied
     * @param promoCode Promo code information
     * @param remainingFixedDiscount For flatQuantity and flatQuantityPerStay, the remaining discount after room nights consumed their share
     * @returns True if discount is applied
     */
    hasDiscount(promoCode?: IPromoCodeDetails, remainingFixedDiscount?: number): boolean;
}
