export interface EngagementScope { name?: string | undefined; authorizedTargets: string[]; excludedTargets?: string[] | undefined; allowedPhases?: Array<"recon" | "enumeration" | "authentication" | "exploitation" | "post-exploitation"> | undefined; allowedPorts?: number[] | undefined; allowedPaths?: string[] | undefined; allowedMethods?: string[] | undefined; maxRate?: number | undefined; maxConcurrency?: number | undefined; authorizationNote?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; expiresAt?: string | undefined; } export declare function loadScope(): Promise; export declare function saveScope(scope: EngagementScope): Promise; export declare function normalizeScopeTarget(target: string): string; export declare function addScopeTargets(targets: string[], patch?: Partial>): Promise; /** * Replace the authorized target list entirely (does not merge with existing). * Empty `targets` clears the file (scoping disabled). */ export declare function replaceScopeTargets(targets: string[], patch?: Partial>): Promise; export declare function clearScope(): Promise; export declare function getScopePath(): string; /** * Reset the cache. Used by tests so a fresh load picks up the new file. */ export declare function resetScopeCache(): void; export declare function getSessionScopePath(sessionId: string): string; export declare function loadScopeForSession(sessionId: string | undefined): Promise; export declare function saveSessionScope(sessionId: string, scope: EngagementScope): Promise; export declare function clearSessionScope(sessionId: string): Promise; export declare function releaseSessionScope(sessionId: string): Promise; export declare function addSessionScopeTargets(sessionId: string, targets: string[], patch?: Partial>): Promise; export declare function replaceSessionScopeTargets(sessionId: string, targets: string[], patch?: Partial>): Promise; export declare function resetSessionScopeCache(): void; /** Loopback aliases that all mean "this machine" for local app verify. */ export declare function isLoopbackScopeTarget(target: string): boolean; /** * Returns true if `target` (hostname / IP / CIDR string) is covered by any * authorized entry in scope. A target is in-scope if: * - it appears literally in authorizedTargets * - it is a subdomain of an authorized hostname * - it is an IPv4 inside an authorized CIDR * - the CIDR target is exactly an authorized CIDR */ export declare function targetInScope(target: string, scope: EngagementScope): boolean; export declare function isScopeActive(scope: EngagementScope | undefined): scope is EngagementScope;