import { GranteeType, IMetadataProvider, NormalizedPermission, PermissionAction, PermissionCheckResult, PermissionProviderBase, UserInfo } from '@memberjunction/core';
/**
 * Wraps {@link ResourcePermissionEngine.GetUserResourcePermissionLevel} behind the
 * unified {@link PermissionProviderBase} contract.
 *
 * Resource permissions support both Users and Roles as grantees and use a hierarchical
 * level model (View < Edit < Owner). The provider translates those levels into canonical
 * action sets: View → [Read], Edit → [Read, Update], Owner → [Read, Update, Delete, Share, Admin].
 *
 * `resourceType` is the human-readable name from the `MJ: Resource Types` entity
 * (e.g., `"User Views"`, `"Reports"`). `resourceId` is the target record ID.
 */
export declare class ResourcePermissionProvider extends PermissionProviderBase {
    readonly DomainName = "Resource Permissions";
    readonly Description = "Generic resource sharing with User or Role grantees, hierarchical View/Edit/Owner levels, and status workflow";
    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[]>;
    /**
     * Rows granted directly by this user to *other* users. Uses the
     * `SharedByUserID` column (added in migration
     * `V202604231235__v5.29.x__ResourcePermission_SharedByUserID.sql`) so every
     * resource type that writes through `MJ: Resource Permissions` surfaces
     * correctly in the end-user Sharing Center's "Shared by me" tab.
     *
     * Only Approved, User-grantee rows are returned — pending requests
     * (`Status === 'Requested'`) and Role grants don't belong in a personal
     * sharing view.
     */
    GetPermissionsGrantedByUser(grantor: UserInfo): Promise<NormalizedPermission[]>;
    /**
     * Rows where this user is the direct grantee AND someone else is the grantor —
     * the inverse of {@link GetPermissionsGrantedByUser}. Powers the Sharing
     * Center's "Shared with me" tab for every resource type that writes through
     * `MJ: Resource Permissions` (Conversations, Reports, User Views, etc.).
     *
     * Only Approved, User-grantee rows are returned. Role-inherited access is
     * intentionally excluded — a personal "Shared with me" view shouldn't surface
     * org-wide role grants. Self-grants (user shared a resource with themselves)
     * are also filtered out.
     */
    GetPermissionsSharedWithUser(grantee: UserInfo): Promise<NormalizedPermission[]>;
    private resolveResourceTypeId;
    private actionsForLevel;
}
//# sourceMappingURL=ResourcePermissionProvider.d.ts.map