import { type ReactNode } from 'react';
import type { ReactElement } from 'react';
export interface LicenseInfo {
    productId: string;
    companyId: string;
    companyName: string | null;
    edition: string;
    status: string;
    activatedAt: string | null;
    expiresAt: string;
    daysUntilExpiration: number;
    isValid: boolean;
    isInTrial: boolean;
    trialDaysRemaining: number;
    isReadOnlyMode: boolean;
    enabledFeatures: string[];
    limits: LicenseLimits;
    maxUsers: number;
    isPerpetual: boolean;
    gracePeriodDays: number;
    renewalDate: string | null;
    isInGracePeriod: boolean;
    hasApiKey: boolean;
    machineFingerprint: string | null;
    instanceId: string | null;
    machineName: string | null;
    licenseServerId: string | null;
    availableFeatures?: LicenseFeatureGroup[];
}
export interface LicenseFeatureGroup {
    group: string;
    features: string[];
}
export interface LicenseLimits {
    users: number;
    tenants: number;
    custom: Record<string, number>;
}
export interface LicenseActivationResult {
    success: boolean;
    errorMessage?: string;
    license?: LicenseInfo;
}
export interface LicenseUsage {
    activeUsers: number;
    activeTenants: number;
}
interface LicenseContextType {
    license: LicenseInfo | null;
    usage: LicenseUsage | null;
    isLoading: boolean;
    error: string | null;
    isFeatureEnabled: (feature: string) => boolean;
    isReadOnlyMode: boolean;
    refreshLicense: () => Promise<void>;
    activateLicense: (key: string, apiKey?: string) => Promise<{
        success: boolean;
        error?: string;
    }>;
}
export declare function LicenseProvider({ children }: {
    children: ReactNode;
}): ReactElement;
export declare function useLicense(): LicenseContextType;
export {};
//# sourceMappingURL=LicenseContext.d.ts.map