import type { PricingTier } from './common/primitives.js';
export interface LicenseState {
    /** License key from Lemon Squeezy */
    readonly licenseKey: string;
    /** Unique instance identifier for this activation */
    readonly instanceId: string;
    /** Resolved tier from the license variant */
    readonly tier: PricingTier;
    /** ISO 8601 timestamp of when the license was activated locally */
    readonly activatedAt: string;
    /** ISO 8601 timestamp of the last successful remote validation */
    readonly lastValidatedAt: string;
    /** Lemon Squeezy variant name (e.g. "Planu Pro Monthly") */
    readonly variantName: string;
    /** Customer name from Lemon Squeezy */
    readonly customerName: string;
    /** Customer email from Lemon Squeezy */
    readonly customerEmail: string;
}
export interface TierLimits {
    readonly maxProjects: number;
    readonly maxActiveSpecs: number;
}
export interface LicensePlanConfig {
    readonly tiers: Record<PricingTier, TierLimits>;
    readonly freeTools: readonly string[];
    readonly proTools: readonly string[];
    readonly alwaysAllowed: readonly string[];
    readonly upgradeUrl: string;
}
export interface LicenseCheckResult {
    readonly allowed: boolean;
    readonly currentTier: PricingTier;
    readonly requiredTier: PricingTier;
    readonly message: string;
}
export interface LemonSqueezyMeta {
    readonly store_id: number;
    readonly order_id: number;
    readonly order_item_id: number;
    readonly product_id: number;
    readonly product_name: string;
    readonly variant_id: number;
    readonly variant_name: string;
    readonly customer_id: number;
    readonly customer_name: string;
    readonly customer_email: string;
}
export interface LemonSqueezyInstance {
    readonly id: string;
    readonly name: string;
    readonly created_at: string;
}
export interface LemonSqueezyActivateResponse {
    readonly activated: boolean;
    readonly error: string | null;
    readonly license_key: {
        readonly id: number;
        readonly status: string;
        readonly key: string;
        readonly activation_limit: number;
        readonly activation_usage: number;
        readonly created_at: string;
        readonly expires_at: string | null;
    };
    readonly instance: LemonSqueezyInstance;
    readonly meta: LemonSqueezyMeta;
}
export interface LemonSqueezyValidateResponse {
    readonly valid: boolean;
    readonly error: string | null;
    readonly license_key: {
        readonly id: number;
        readonly status: string;
        readonly key: string;
        readonly activation_limit: number;
        readonly activation_usage: number;
        readonly created_at: string;
        readonly expires_at: string | null;
    };
    readonly instance: LemonSqueezyInstance;
    readonly meta: LemonSqueezyMeta;
}
export interface LemonSqueezyDeactivateResponse {
    readonly deactivated: boolean;
    readonly error: string | null;
}
export interface ActivateLicenseInput {
    readonly licenseKey: string;
    readonly instanceName?: string;
}
export interface DeactivateLicenseInput {
    readonly confirm: boolean;
}
export interface LicenseStatusInput {
    readonly projectId?: string;
}
//# sourceMappingURL=licensing.d.ts.map