/**
 * License data structure received from the license server
 * Note: Email and Name are stored in Customer table but not included in license data for privacy
 */
export interface LicenseData {
    licenseId: string;
    companyName: string;
    type: "trial" | "purchased";
    features: string[];
    issuedAt: string;
    expiresAt?: string;
    maxBuildDate?: string;
    maxConcurrentUsers?: number;
    signature: string;
}
/**
 * License status from the Parhelia backend
 * Note: Email and Name are not exposed for privacy - stored in Customer table only
 */
export interface LicenseStatus {
    isValid: boolean;
    status: LicenseStatusType;
    message?: string;
    licenseType?: "trial" | "purchased";
    companyName?: string;
    features?: string[];
    expiresAt?: string;
    daysRemaining?: number;
    maxConcurrentUsers?: number;
    /** Current number of users connected that count toward the license limit (excludes reviewers/previewers). */
    currentLicenseUserCount?: number;
    buildDate: string;
    /** When true, licensing is disabled (no key/URL configured); do not show overlay or call license server. */
    licensingDisabled?: boolean;
}
export type LicenseStatusType = "valid" | "trial" | "purchased" | "expired" | "invalid" | "no_license" | "build_too_new" | "disabled" | "error";
/** Inner license object for v2 envelope (no embedded signature). */
export type LicensePayloadV2 = Omit<LicenseData, "signature">;
/**
 * Response from the license server's /request endpoint
 */
export interface LicenseRequestResponse {
    status: "trial" | "code_sent" | "trial_expired" | "rate_limited" | "error";
    message?: string;
    /** v1: flat license with embedded signature. v2: inner payload only when `signature` is set at top level. */
    license?: LicenseData | LicensePayloadV2;
    /** v2 only: RSA signature over canonical inner `license` JSON. */
    signature?: string;
    /** When status is trial: true if the client should collect name and company before treating activation as complete. */
    requiresProfileCompletion?: boolean;
    expiresAt?: string;
    expiredAt?: string;
    codeExpiresInMinutes?: number;
    retryAfterSeconds?: number;
}
/**
 * Response from the license server's /verify-code endpoint
 */
export interface VerifyCodeResponse {
    status: "purchased" | "invalid_code" | "rate_limited" | "error";
    message?: string;
    retryAfterSeconds?: number;
    license?: LicenseData | LicensePayloadV2;
    /** v2 only: outer envelope signature. */
    signature?: string;
}
/**
 * Request to the license server
 */
export interface LicenseRequest {
    email: string;
    name: string;
    companyName: string;
    parheliaBuildDate?: string;
}
/**
 * Request to verify an activation code
 */
export interface VerifyCodeRequest {
    email: string;
    code: string;
}
/**
 * Activation flow state
 */
export type ActivationState = "idle" | "loading" | "email_entry" | "trial_form" | "code_entry" | "trial_expired" | "welcome_back" | "success" | "error";
/**
 * Known feature flags
 */
export declare const LicenseFeatures: {
    readonly FULL: "full";
    readonly AI: "ai";
    readonly TRANSLATION: "translation";
    readonly PAGE_WIZARD: "page-wizard";
    readonly REVIEWS: "reviews";
    readonly MINIMAL: "minimal";
};
