import { GranteeType, IMetadataProvider, NormalizedPermission, PermissionAction, PermissionCheckResult, PermissionProviderBase, UserInfo } from '@memberjunction/core';
/**
 * Wraps the Phase 1 {@link UserInfoEngine} application-access logic behind the
 * unified {@link PermissionProviderBase} contract. Unlike `UserHasApplicationAccess`
 * which operates on the *current* user only, this provider reasons about arbitrary
 * users by inspecting the raw ApplicationRole catalog.
 *
 * Mapping: `Read` = CanAccess, `Admin` = CanAdmin.
 *
 * `resourceType` is always `"Applications"`. `resourceId` is the application ID.
 *
 * An application with zero ApplicationRole records is "open access" — every user
 * has Read (but not Admin) on it.
 */
export declare class ApplicationRolePermissionProvider extends PermissionProviderBase {
    readonly DomainName = "Application Roles";
    readonly Description = "Role-based authorization for MJ applications (Phase 1). Apps with no ApplicationRole records are open-access.";
    readonly SupportedGranteeTypes: GranteeType[];
    readonly SupportedActions: PermissionAction[];
    readonly SupportsDeny = false;
    GetResourceTypes(): 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 actionsForUserApp;
}
//# sourceMappingURL=ApplicationRolePermissionProvider.d.ts.map