/**
 * Multi-tenancy support for AI governance.
 *
 * Enables namespaced governance contexts so multiple teams/projects
 * can share a single governance installation with isolated rules,
 * permissions, and audit trails.
 *
 * @connexum/ai-governance
 */
export interface TenantConfig {
    /** Unique tenant identifier */
    id: string;
    /** Human-readable tenant name */
    name: string;
    /** Parent tenant ID for inheritance (optional) */
    parentId?: string;
    /** Governance file path override (defaults to {baseDir}/{id}/governance.md) */
    governanceFile?: string;
    /** Active compliance packs for this tenant */
    packs?: string[];
    /** Tenant-specific permission overrides */
    permissionOverrides?: Record<string, 'ALLOWED' | 'BLOCKED' | 'APPROVAL_REQUIRED'>;
    /** Whether this tenant is active */
    active?: boolean;
}
export interface TenantContext {
    /** Resolved tenant config */
    tenant: TenantConfig;
    /** Resolved governance file path */
    governanceFile: string;
    /** Resolved permissions directory */
    permissionsDir: string;
    /** Resolved log directory */
    logDir: string;
    /** Inherited permissions from parent chain */
    inheritedPermissions: Record<string, 'ALLOWED' | 'BLOCKED' | 'APPROVAL_REQUIRED'>;
}
export interface TenantIsolationCheck {
    /** Whether the check passed */
    valid: boolean;
    /** Violations found */
    violations: string[];
}
export interface MultiTenantConfig {
    /** Base directory for all tenant data */
    baseDir: string;
    /** Maximum tenant nesting depth (default: 3) */
    maxDepth?: number;
}
export declare class TenantNotFoundError extends Error {
    tenantId: string;
    constructor(tenantId: string);
}
export declare class TenantCycleError extends Error {
    chain: string[];
    constructor(chain: string[]);
}
export declare class MultiTenantGovernance {
    private config;
    private tenants;
    private registryFile;
    constructor(config: MultiTenantConfig);
    /**
     * Register a new tenant.
     */
    registerTenant(config: TenantConfig): TenantContext;
    /**
     * Get a tenant's resolved context (with inheritance).
     */
    getTenantContext(tenantId: string): TenantContext;
    /**
     * List all registered tenants.
     */
    listTenants(): TenantConfig[];
    /**
     * Update a tenant's configuration.
     */
    updateTenant(tenantId: string, updates: Partial<TenantConfig>): TenantConfig;
    /**
     * Deactivate a tenant (soft delete).
     */
    deactivateTenant(tenantId: string): void;
    /**
     * Verify cross-tenant isolation.
     * Checks that no tenant can access another tenant's data paths.
     */
    verifyIsolation(): TenantIsolationCheck;
    /**
     * Resolve effective permissions for a tenant (including inheritance).
     */
    resolvePermissions(tenantId: string): Record<string, 'ALLOWED' | 'BLOCKED' | 'APPROVAL_REQUIRED'>;
    /**
     * Get the number of registered tenants.
     */
    get tenantCount(): number;
    private resolveTenantContext;
    private getInheritanceChain;
    private getInheritanceDepth;
    private checkCycle;
    private validateTenantId;
    private loadRegistry;
    private saveRegistry;
    private ensureDir;
}
//# sourceMappingURL=multi-tenant.d.ts.map