import { FreeUsageCount } from "@iblai/iblai-api";
interface Tenant {
    key: string;
    is_admin: boolean;
    org: string;
}
export interface SubscriptionFlowConfig {
    platformName: string;
    currentTenantKey: string;
    username: string;
    currentTenantOrg: string;
    userTenants: Tenant[];
    isAdmin: boolean;
    mainTenantKey: string;
}
/**
 * SubscriptionFlow class manages all subscription-related flows and user interactions
 * Handles free trial, usage limits, and subscription management
 */
export declare abstract class SubscriptionFlow {
    protected platformName: string;
    protected currentTenantKey: string;
    protected username: string;
    protected currentTenantOrg: string;
    protected userTenants: Tenant[];
    protected isAdmin: boolean;
    protected mainTenantKey: string;
    constructor(config: SubscriptionFlowConfig);
    getPlatformName(): string;
    getCurrentTenantKey(): string;
    getUsername(): string;
    getCurrentTenantOrg(): string;
    getUserTenants(): Tenant[];
    isUserAdmin(): boolean;
    /**
     * Handles the flow when user reaches their free usage limit
     * Updates banner with appropriate message based on remaining usage count
     */
    abstract handleFreeUsageCountFlow(freeUsageCount: FreeUsageCount): void;
    /**
     * Handles the flow when user's free trial period has ended
     * Updates banner and clears any existing trial interval
     */
    abstract handleTrialEndedFlow(freeTrialIntervalID?: number): void;
    /**
     * Handles the flow for ongoing subscription period
     * Updates banner with remaining trial time and subscription options
     */
    abstract handleSubscriptionOnGoingFlow(timeRemainingInString: string): void;
    /**
     * Handles redirection to external URLs with optional toast notification
     */
    abstract handleRedirectToURLFlow(redirectUrl: string, toastMessage?: string): void;
    /**
     * Displays the pricing modal for subscription options
     */
    handlePricingPageDisplayFlow(): void;
    /**
     * Handles the pre-subscription state
     * Updates banner to show loading state
     */
    handleBeforeSubscribeUserTriggerFlow(): void;
    /**
     * Handles successful subscription completion
     * Shows success message and disables subscription banner
     */
    abstract handleSuccessfullySubscribedFlow(message?: string): void;
    getMainTenantKey(): string;
}
export {};
