import { GranteeType, IMetadataProvider, NormalizedPermission, PermissionAction, PermissionCheckResult, PermissionProviderBase, UserInfo } from '@memberjunction/core';
/**
 * Wraps the {@link Metadata} + `EntityInfo.GetUserPermisions()` path behind the
 * unified {@link PermissionProviderBase} contract. Entity permissions are role-only,
 * additive (OR across roles), and cover the CRUD action set only.
 *
 * `resourceType` is the entity name (e.g., `"Users"`).
 * `resourceId` is unused — entity permissions are domain-wide per entity, not per-row.
 * Row-level filters are a separate concern handled by the RLS system.
 */
export declare class EntityPermissionProvider extends PermissionProviderBase {
    readonly DomainName = "Entity Permissions";
    readonly Description = "CRUD permissions on MJ entities, role-based with optional row-level security filters and explicit Allow/Deny rows";
    readonly SupportedGranteeTypes: GranteeType[];
    readonly SupportedActions: PermissionAction[];
    readonly SupportsDeny = true;
    GetResourceTypes(provider?: IMetadataProvider): string[];
    CheckPermission(user: UserInfo, resourceType: string, _resourceId: string | null, action: PermissionAction, provider?: IMetadataProvider): Promise<PermissionCheckResult>;
    GetEffectivePermissions(user: UserInfo, resourceType: string, _resourceId: string, provider?: IMetadataProvider): Promise<NormalizedPermission[]>;
    GetUserResources(user: UserInfo, resourceType?: string, provider?: IMetadataProvider): Promise<NormalizedPermission[]>;
    GetResourcePermissions(resourceType: string, _resourceId: string, provider?: IMetadataProvider): Promise<NormalizedPermission[]>;
    private checkActionOnPermission;
    private resolveActions;
}
//# sourceMappingURL=EntityPermissionProvider.d.ts.map