export type GrantMode = 'read' | 'write'; export type GrantDecision = 'allow' | 'deny'; export type GrantSource = 'elicit:repl' | 'elicit:telegram' | 'elicit:web' | 'elicit:unknown' | 'manual'; export interface PermissionGrant { id: string; path: string; mode: GrantMode; decision: GrantDecision; grantedAt: string; source: GrantSource; reason?: string; expiresAt?: string; } export interface PermissionsFile { version: 1; grants: PermissionGrant[]; } export declare function generateUlid(now?: number): string; export declare function loadPermissionsFile(filePath?: string): PermissionsFile; export declare function appendGrant(body: Omit & { grantedAt?: string; }, filePath?: string): PermissionGrant; export declare function revokeGrantById(id: string, filePath?: string): boolean; export declare function allowedPathsForMode(mode: GrantMode, filePath?: string): string[]; export declare function seedPersistedGrants(grantManager: { addReadRoot(absPath: string, source: 'slash' | 'tool'): void; addWriteRoot(absPath: string, source: 'slash' | 'tool'): void; }, filePath?: string): void;