import type { BlocklistEntry, BlocklistCache, InstallSafetyResult } from "./types.js";
/**
 * Read the cached blocklist from disk.
 * Returns null if the cache file does not exist or is corrupted.
 */
export declare function getCachedBlocklist(): BlocklistCache | null;
/**
 * Check whether the cached blocklist is older than the stale threshold (1 hour).
 */
export declare function isBlocklistStale(cache: BlocklistCache): boolean;
/**
 * Fetch the full blocklist from the API and write it to the local cache.
 */
export declare function syncBlocklist(): Promise<BlocklistCache>;
/**
 * Check whether a skill is on the blocklist.
 *
 * 1. Check local cache first.
 * 2. If cache is stale, attempt to refresh from the API.
 * 3. If the API is unreachable, fall back to the stale cache.
 * 4. Returns the matching BlocklistEntry or null if not blocked.
 */
export declare function checkBlocklist(skillName: string, contentHash?: string): Promise<BlocklistEntry | null>;
/**
 * Check install safety via the platform API (blocklist + rejection status).
 *
 * Makes a single HTTP call to GET /api/v1/blocklist/check?name=X.
 * Falls back to local checkBlocklist() when the API is unreachable
 * (graceful degradation: rejected=false).
 *
 * When repoUrl is provided and the API returns a rejection from a different
 * repo, the rejection is ignored (name-only matching can produce false
 * positives across unrelated repos).
 */
export declare function checkInstallSafety(skillName: string, contentHash?: string, repoUrl?: string): Promise<InstallSafetyResult>;
