import { StripeContextResponse } from "@iblai/data-layer";
interface Tenant {
    key: string;
    is_admin: boolean;
    org: string;
    is_advertising?: boolean;
}
export interface SubscriptionFlowConfigV2 {
    platformName: string;
    currentTenantKey: string;
    username: string;
    currentTenantOrg: string;
    userTenants: Tenant[];
    isAdmin: boolean;
    mainTenantKey: string;
    userEmail: string;
    mentorUrl: string;
}
/**
 * SubscriptionFlow class manages all subscription-related flows and user interactions
 * Handles free trial, usage limits, and subscription management
 */
export declare abstract class SubscriptionFlowV2 {
    protected platformName: string;
    protected currentTenantKey: string;
    protected username: string;
    protected currentTenantOrg: string;
    protected userTenants: Tenant[];
    protected isAdmin: boolean;
    protected mainTenantKey: string;
    protected userEmail: string;
    protected mentorUrl: string;
    constructor(config: SubscriptionFlowConfigV2);
    getPlatformName(): string;
    getCurrentTenantKey(): string;
    getUsername(): string;
    getCurrentTenantOrg(): string;
    getUserTenants(): Tenant[];
    isUserAdmin(): boolean;
    getUserEmail(): string;
    getMainTenantKey(): string;
    getMentorUrl(): string;
    abstract handleRedirectToBillingPageFlow(billingUrl: string): void;
    handleBeforeTopUpCreditTriggerFlow(): void;
    handleBeforeBillingPageTriggerFlow(): void;
    /**
     * Handles the flow when user reaches their free usage limit
     * Updates banner with appropriate message based on remaining usage count
     */
    abstract handleFreeUsageCountFlow(hasCredits: boolean, appExists: boolean): void;
    /**
     * Displays the pricing modal for subscription options
     */
    abstract handlePricingPageDisplayFlow(stripeContext: StripeContextResponse, creditExhausted: boolean): void;
    /**
     * Displays error notification when payment flow fails
     */
    handleFailureOnPaymentFlow(): void;
    handleBeforePricingPageDisplayFlow(): void;
    handleFailureOnTopUpCreditTriggerFlow(): void;
    handlePaidPlanCreditExhaustedFlow(): void;
    handleProPlanCreditExhaustedFlow(): void;
    handleStudentOnPaidPlanCreditExhaustedFlow(): void;
    abstract handleOpenContactAdminFlow(adminEmail: string): void;
    abstract handleCreditExhaustedWithUserOnFreePackageFlow({ subscriptionId, expiryDate, }: {
        subscriptionId: string;
        expiryDate: string;
    }): void;
    abstract handleCreditExhaustedWithUserOnStarterPackageFlow({ subscriptionId, expiryDate, }: {
        subscriptionId: string;
        expiryDate: string;
    }): void;
    abstract handleCreditExhaustedWithUserOnProPackageFlow({ expiryDate, }: {
        expiryDate: string;
    }): void;
    handleFailureOnBillingPageTriggerFlow(): void;
}
export {};
