/**
 * Permissions staleness — every `groups/*.yaml` across user + system
 * contributes to the merged permission set (project layer not consulted by
 * the current sync writer). First-wins on name collision (user > system).
 *
 * The active preset env value (`AGENTS_PERMISSION_PRESET`) is part of the
 * fingerprint too — preset selection changes which groups get applied to
 * the agent config, so a preset switch without a content change still
 * counts as stale.
 */
import type { PermEntry } from '../types.js';
/** Walk user + system permissions/groups/. First-wins user > system on names. */
export declare function collectPermissionGroupFiles(): Record<string, string>;
/** Build the permissions section of the manifest. */
export declare function buildPermissions(): PermEntry;
/** True when the stored permissions section no longer matches current state. */
export declare function isPermissionsStale(stored: PermEntry): boolean;
