import { type BriefingConfig } from "./config.js"; /** * Generate a machine fingerprint from hostname + username + salt. * Returns the first 16 hex chars of a SHA-256 digest. */ export declare function generateFingerprint(): string; /** * Check whether `key` matches the expected UUID format. */ export declare function isValidKeyFormat(key: string): boolean; export interface ActivationResult { success: boolean; message: string; } /** * Activate a license key via Lemon Squeezy License API. * * Flow: * 1. Validate key format (UUID) * 2. POST /v1/licenses/activate with key + machine fingerprint * 3. Verify store_id / product_id ownership * 4. Save key + instanceId to local config * * Falls back to offline activation if the network is unreachable, * storing the key locally for later online validation. */ export declare function activateLicense(key: string, config: BriefingConfig): Promise; /** * Returns `true` if the config contains a license whose key is present and * whose fingerprint matches the current machine. * Synchronous — no network calls. Used on every briefing run. */ export declare function isLicensed(config: BriefingConfig): boolean; /** * Guard: if the user is not licensed, print an upgrade prompt and exit with * code 3 so callers can distinguish "not licensed" from other errors. */ export declare function requireLicense(config: BriefingConfig, feature: string): void; /** * Return a human-readable license status object. * * Attempts online validation via Lemon Squeezy (5 s timeout). * Falls back to local state on network failure. */ export declare function checkLicenseStatus(config: BriefingConfig): Promise>; //# sourceMappingURL=license.d.ts.map