import { Resource } from "../../common";
import { APIUserSubscriptionRequest, APIUserSubscriptionResponse, SavedStorePeriod, SavedStoreUserSubscription, StorePeriod, StoreUserSubscription, SubscriptionStatus, SubscriptionType } from "./interfaces";
export declare class UserSubscription extends Resource {
    /**
     * User id for the user subscription.
     */
    userId: string;
    /**
     * The user subscription's type.
     */
    subscriptionType: SubscriptionType;
    /**
     * Product id containing the subscription details.
     */
    subscription: string;
    /**
     * Status of the user subscription.
     */
    status: SubscriptionStatus;
    /**
     * subscription slug.
     */
    subscriptionSlug: string;
    /**
     * The discount applied to the user subscription.
     */
    discount?: string | null | undefined;
    /**
     * Period of the user subscription.
     */
    period?: SavedStorePeriod | StorePeriod | undefined;
    /**
     * Whether the subscription has white labeling.
     */
    whiteLabelUnlocked?: boolean | undefined;
    /**
     * An indicator on whether the user subscription is expired or not.
     */
    isExpired?: boolean | undefined;
    /**
     * Interval in months for the user subscription.
     */
    subscriptionInterval?: number | undefined;
    /**
     * Price of the user subscription at checkout.
     */
    price?: number | undefined;
    /**
     * Last time the user subscription was renewed.
     */
    lastRenewal?: string | null | undefined;
    /**
     * The type of cancellation the user choose.
     */
    cancelType?: "other" | "info_complicated" | "want_more_reports" | "too_expensive" | "not_using" | "alt_service" | null | undefined;
    /**
     * The reason because the user cancels.
     */
    cancelReason?: string | undefined;
    /**
     * The date when the user cancels the subscription.
     */
    cancelDate?: string | null | undefined;
    /**
     * What to do with the user data after cancellation.
     */
    cancelUserData?: "delete_all_data" | "research_permission" | "keep_it_stored" | null | undefined;
    /**
     * If the user already took the "Two months free" deal.
     */
    twoMonthsDeal?: boolean | undefined;
    /**
     * Trial ID for the user subscription.
     */
    trial?: string | null | undefined;
    constructor(
    /**
     * User id for the user subscription.
     */
    userId: string, 
    /**
     * The user subscription's type.
     */
    subscriptionType: SubscriptionType, 
    /**
     * Product id containing the subscription details.
     */
    subscription: string, 
    /**
     * Status of the user subscription.
     */
    status: SubscriptionStatus, 
    /**
     * subscription slug.
     */
    subscriptionSlug: string, 
    /**
     * The discount applied to the user subscription.
     */
    discount?: string | null | undefined, 
    /**
     * Period of the user subscription.
     */
    period?: SavedStorePeriod | StorePeriod | undefined, 
    /**
     * Whether the subscription has white labeling.
     */
    whiteLabelUnlocked?: boolean | undefined, 
    /**
     * An indicator on whether the user subscription is expired or not.
     */
    isExpired?: boolean | undefined, 
    /**
     * Interval in months for the user subscription.
     */
    subscriptionInterval?: number | undefined, 
    /**
     * Price of the user subscription at checkout.
     */
    price?: number | undefined, 
    /**
     * Last time the user subscription was renewed.
     */
    lastRenewal?: string | null | undefined, 
    /**
     * The type of cancellation the user choose.
     */
    cancelType?: "other" | "info_complicated" | "want_more_reports" | "too_expensive" | "not_using" | "alt_service" | null | undefined, 
    /**
     * The reason because the user cancels.
     */
    cancelReason?: string | undefined, 
    /**
     * The date when the user cancels the subscription.
     */
    cancelDate?: string | null | undefined, 
    /**
     * What to do with the user data after cancellation.
     */
    cancelUserData?: "delete_all_data" | "research_permission" | "keep_it_stored" | null | undefined, 
    /**
     * If the user already took the "Two months free" deal.
     */
    twoMonthsDeal?: boolean | undefined, 
    /**
     * Trial ID for the user subscription.
     */
    trial?: string | null | undefined);
    /**
     * The name of the UserSubscription resource on the API server.
     */
    static get resourceName(): string;
    /**
     * The name of the service containing the UserSubscription resource.
     */
    static get serviceName(): string;
    /**
     * Convert the UserSubscription into a JSON serializable object for the API server.
     */
    serializeAPI(): APIUserSubscriptionRequest;
    /**
     * Deserialize the data from the API server.
     *
     * @param data The UserSubscription data from the API server.
     */
    deserializeAPI(data: APIUserSubscriptionResponse): void;
    /**
     * Serialize the userSubscription into a format for storing in the Redux store.
     */
    serializeRedux(): SavedStoreUserSubscription;
    /**
     * Create a userSubscription from the API server data.
     *
     * @param data Data from the api server.
     *
     * @returns The userSubscription object.
     */
    static apiFactory(data: APIUserSubscriptionResponse): UserSubscription;
    /**
     * Create a userSubscription from the Redux store data.
     *
     * @param data Data from the api server.
     *
     * @returns The UserSubscription object.
     */
    static reduxFactory(data: StoreUserSubscription): UserSubscription;
    /**
     * Convert the Period to camel case.
     */
    private static convertPeriodToCamelCase;
    /**
     * Execute additional actions in the user subscription.
     */
    action(actionName: string): Promise<void>;
}
