import { Resource } from "../../common";
import { APIInvoice, StoreInvoice } from "./interfaces";
export declare class Invoice extends Resource {
    /**
     * The products from the invoice.
     */
    products: StoreInvoice["products"];
    /**
     * The extras from the invoice.
     */
    extras: StoreInvoice["extras"];
    /**
     * The status of the invoice in the backend.
     */
    status: StoreInvoice["status"];
    /**
     * The payment gateway of the invoice: stripe | paypal
     */
    paymentGateway: StoreInvoice["paymentGateway"];
    /**
     * The total amount charged for the products. w/o discount
     */
    amount: StoreInvoice["amount"];
    /**
     * The amount charged for the products. With discounts if any.
     */
    chargedAmount: StoreInvoice["chargedAmount"];
    /**
     * The amount of items charged.
     */
    quantityItems: StoreInvoice["quantityItems"];
    /**
     * The id of the user charged to.
     */
    userId: StoreInvoice["userId"];
    /**
     * The date in which the user paid for the products.
     */
    paidAt: StoreInvoice["paidAt"];
    /**
     * The last date in which the user retried the payment if any.
     */
    retriedAt: StoreInvoice["retriedAt"];
    /**
     * The number of retries the user made to pay for the products.
     */
    retries: StoreInvoice["retries"];
    /**
     * The period of the invoice.
     */
    period: StoreInvoice["period"];
    /**
     * The id of the checkout where the products where paid for.
     */
    checkout: StoreInvoice["checkout"];
    /**
     * The discount if any of the products.
     */
    discount: StoreInvoice["discount"];
    /**
     * Difference between the total if there weren't any kind of
     * discounts and the actual amount it was charged (discounts applied).
     *
     * The 'totalProrated ' is also included in this number
     */
    totalDiscount: StoreInvoice["totalDiscount"];
    /**
     * An amount deducted from the invoice total based on the amount of
     * time the user had left on his previous Subscription when he is
     * about to purchase a new one
     */
    totalProrated: StoreInvoice["totalProrated"];
    constructor(
    /**
     * The products from the invoice.
     */
    products: StoreInvoice["products"], 
    /**
     * The extras from the invoice.
     */
    extras: StoreInvoice["extras"], 
    /**
     * The status of the invoice in the backend.
     */
    status: StoreInvoice["status"], 
    /**
     * The payment gateway of the invoice: stripe | paypal
     */
    paymentGateway: StoreInvoice["paymentGateway"], 
    /**
     * The total amount charged for the products. w/o discount
     */
    amount: StoreInvoice["amount"], 
    /**
     * The amount charged for the products. With discounts if any.
     */
    chargedAmount: StoreInvoice["chargedAmount"], 
    /**
     * The amount of items charged.
     */
    quantityItems: StoreInvoice["quantityItems"], 
    /**
     * The id of the user charged to.
     */
    userId: StoreInvoice["userId"], 
    /**
     * The date in which the user paid for the products.
     */
    paidAt: StoreInvoice["paidAt"], 
    /**
     * The last date in which the user retried the payment if any.
     */
    retriedAt: StoreInvoice["retriedAt"], 
    /**
     * The number of retries the user made to pay for the products.
     */
    retries: StoreInvoice["retries"], 
    /**
     * The period of the invoice.
     */
    period: StoreInvoice["period"], 
    /**
     * The id of the checkout where the products where paid for.
     */
    checkout: StoreInvoice["checkout"], 
    /**
     * The discount if any of the products.
     */
    discount: StoreInvoice["discount"], 
    /**
     * Difference between the total if there weren't any kind of
     * discounts and the actual amount it was charged (discounts applied).
     *
     * The 'totalProrated ' is also included in this number
     */
    totalDiscount: StoreInvoice["totalDiscount"], 
    /**
     * An amount deducted from the invoice total based on the amount of
     * time the user had left on his previous Subscription when he is
     * about to purchase a new one
     */
    totalProrated: StoreInvoice["totalProrated"]);
    /**
     * The name of the service containing the invoice details resource.
     */
    static get serviceName(): string;
    /**
     * The name of the invoice details resource on the API server.
     */
    static get resourceName(): string;
    private serialized_products;
    private serialized_extras;
    private static deserialized_products;
    private static deserialized_extras;
    /**
     * Convert the invoice details into a JSON serializable object for the API server.
     */
    serializeAPI(): APIInvoice;
    /**
     * Serialize the invoice details into a format for storing in the Redux store.
     */
    serializeRedux(): StoreInvoice;
    /**
     * Deserialize the data from the API server.
     *
     * @param data The invoice details data from the API server.
     */
    deserializeAPI(data: APIInvoice): void;
    /**
     * Create an invoice details resource from the API server data.
     *
     * @param data Data from the api server.
     *
     * @returns The invoice details object.
     */
    static apiFactory(data: APIInvoice): Invoice;
    /**
     * Create an invoice details resource from the redux store data.
     *
     * @param data Data from the redux store.
     *
     * @returns The invoice details object.
     */
    static reduxFactory(data: StoreInvoice): Invoice;
}
