/**
 * Narrow resolved dashboard data to what a user is allowed to see.
 *
 * This runs server-side, before serialization: a member is *sent* less, not
 * merely shown less. Hiding a panel in the UI would leave every other tenant's
 * deploy history and log lines one devtools tab away.
 *
 * Admins get the payload untouched. For a member we keep only their sites and
 * the observability derived from them, and drop the box-level surface
 * (host metrics, services, SSH keys, firewall, backups) outright — none of it
 * is theirs, and some of it (open ports, auth events) is a map of the box.
 */
import type { DashboardUser } from './dashboard-auth';
export interface ScopeOptions {
    user: Pick<DashboardUser, 'role' | 'sites'>;
    /** Project slug, used to match a site to its systemd units. */
    slug: string;
}
/**
 * Return a copy of `data` containing only what `user` may see.
 */
export declare function scopeDashboardData(data: Record<string, any>, options: ScopeOptions): Record<string, any>;
/** Narrow the sanitized cloud config the same way. */
export declare function scopeCloudConfig(config: Record<string, any>, user: Pick<DashboardUser, 'role' | 'sites'>): Record<string, any>;
