import React, { ReactNode } from "react";
import type { LicenseStatus, ActivationState } from "./types";
interface LicenseContextValue {
    /** Current license status from the backend */
    licenseStatus: LicenseStatus | null;
    /** Whether we're currently loading license status */
    isLoading: boolean;
    /** Whether the license is valid (trial or purchased) */
    isLicensed: boolean;
    /** License type if licensed */
    licenseType: "trial" | "purchased" | null;
    /** Available features */
    features: string[];
    /** Check if a specific feature is available */
    hasFeature: (feature: string) => boolean;
    /** Days remaining for trial licenses */
    daysRemaining?: number;
    /** Expiration date */
    expiresAt?: Date;
    /** Current activation flow state */
    activationState: ActivationState;
    /** Error message if any */
    error?: string;
    /** Remaining retry delay for activation throttling, if present */
    activationRetryAfterSeconds?: number;
    /** Start the activation flow */
    startActivation: () => void;
    /** Check email and determine next step */
    checkEmail: (email: string) => Promise<void>;
    /** Submit license request form (for trial) */
    submitLicenseRequest: (email: string, name: string, companyName: string) => Promise<void>;
    /** Submit activation code */
    submitActivationCode: (code: string) => Promise<void>;
    /** Refresh license status */
    refreshLicenseStatus: () => Promise<void>;
    /** Close the activation overlay */
    closeActivation: () => void;
    /** Email used in the activation flow */
    activationEmail?: string;
}
export declare function useLicense(): LicenseContextValue;
export declare function useLicenseOptional(): LicenseContextValue | null;
interface LicenseProviderProps {
    children: ReactNode;
    initialLicenseStatus?: LicenseStatus | null;
    initialStatusLoaded?: boolean;
}
export declare function LicenseProvider({ children, initialLicenseStatus, initialStatusLoaded, }: LicenseProviderProps): React.JSX.Element;
export {};
