import { SmrtCollection } from '@happyvertical/smrt-core'; import { TenantPermissionOverride } from '../models/TenantPermissionOverride.js'; import { TenantPermissionEffect } from '../types/index.js'; /** * Result of resolving tenant permission overrides */ export interface TenantPermissionOverrideResult { /** Permission IDs explicitly granted at this tenant level */ grantedPermissionIds: string[]; /** Permission IDs explicitly denied at this tenant level */ deniedPermissionIds: string[]; /** Permission IDs set to inherit from parent */ inheritedPermissionIds: string[]; } /** * Collection for managing TenantPermissionOverride objects. * * Provides methods for setting and querying tenant-level permission overrides * used in hierarchical tenant permission inheritance. */ export declare class TenantPermissionOverrideCollection extends SmrtCollection { static readonly _itemClass: typeof TenantPermissionOverride; /** * Find all overrides for a tenant */ findByTenant(tenantId: string): Promise; /** * Find grant overrides for a tenant. * * Filters in memory because the `effect` column is JSON-typed and * Postgres rejects bare `json = text` comparisons. A single * `findByTenant` call is reused for grant, deny, and inherit lookups. */ findGrants(tenantId: string): Promise; /** * Find deny overrides for a tenant. * * See `findGrants` for rationale on in-memory filtering. */ findDenies(tenantId: string): Promise; /** * Find inherit overrides for a tenant. * * See `findGrants` for rationale on in-memory filtering. */ findInherits(tenantId: string): Promise; /** * Get granted permission IDs for a tenant */ getGrantedPermissionIds(tenantId: string): Promise; /** * Get denied permission IDs for a tenant */ getDeniedPermissionIds(tenantId: string): Promise; /** * Get all overrides for a tenant, organized by effect */ getOverridesByEffect(tenantId: string): Promise; /** * Batch get all overrides for multiple tenants, organized by effect. * Fetches all overrides in a single query to avoid N+1 query problem. * * @param tenantIds - Array of tenant IDs to fetch overrides for * @returns Map of tenant ID to their permission override results */ getOverridesByEffectBatch(tenantIds: string[]): Promise>; /** * Set an override for a tenant permission */ setOverride(tenantId: string, permissionId: string, effect: TenantPermissionEffect): Promise; /** * Remove an override (permission will use default behavior) */ removeOverride(tenantId: string, permissionId: string): Promise; /** * Remove all overrides for a tenant */ removeAllOverrides(tenantId: string): Promise; /** * Grant a permission at the tenant level. * Convenience method for setOverride with GRANT effect. */ grantPermission(tenantId: string, permissionId: string): Promise; /** * Deny a permission at the tenant level. * Convenience method for setOverride with DENY effect. * This blocks inheritance from parent tenants. */ denyPermission(tenantId: string, permissionId: string): Promise; /** * Set a permission to inherit from parent. * Convenience method for setOverride with INHERIT effect. * This is the default behavior, so mainly useful to document intent * or to reset a previous grant/deny. */ inheritPermission(tenantId: string, permissionId: string): Promise; /** * Bulk set overrides for a tenant. * Useful for importing or copying permission configurations. */ bulkSetOverrides(tenantId: string, overrides: Array<{ permissionId: string; effect: TenantPermissionEffect; }>): Promise; /** * Copy overrides from one tenant to another. * Useful when creating child tenants or templates. */ copyOverrides(fromTenantId: string, toTenantId: string): Promise; } //# sourceMappingURL=TenantPermissionOverrideCollection.d.ts.map