import { GranteeType, NormalizedPermission, PermissionAction, PermissionCheckResult, PermissionProviderBase, UserInfo } from '@memberjunction/core';
/**
 * Wraps {@link DashboardEngine.GetDashboardPermissions} behind the unified
 * {@link PermissionProviderBase} contract. Dashboard permissions are user-only
 * (no role grants), support Owner / direct / category-inherited sources, and
 * cover Read / Update / Delete / Share.
 *
 * `resourceType` is always `"Dashboards"` (the entity name).
 * `resourceId` is the dashboard ID.
 *
 * The backing {@link DashboardEngine} lazy-initializes via its own `@RegisterForStartup`
 * decorator; this provider reads from it on demand so startup ordering between
 * PermissionEngine and DashboardEngine doesn't matter — whichever configures last wins.
 */
export declare class DashboardPermissionProvider extends PermissionProviderBase {
    readonly DomainName = "Dashboard Permissions";
    readonly Description = "User-level sharing permissions on MJ dashboards; includes category-level inheritance and owner semantics";
    readonly SupportedGranteeTypes: GranteeType[];
    readonly SupportedActions: PermissionAction[];
    readonly SupportsDeny = false;
    GetResourceTypes(): string[];
    CheckPermission(user: UserInfo, _resourceType: string, resourceId: string | null, action: PermissionAction): Promise<PermissionCheckResult>;
    GetEffectivePermissions(user: UserInfo, _resourceType: string, resourceId: string): Promise<NormalizedPermission[]>;
    GetUserResources(user: UserInfo, resourceType?: string): Promise<NormalizedPermission[]>;
    /**
     * Dashboards shared with `grantee` by someone else. Excludes dashboards the
     * user owns and excludes permission rows the user created themselves.
     *
     * Permission rows whose dashboard no longer exists in the engine cache are
     * skipped — covers the window between a DB cascade delete (cleaning up
     * DashboardPermission rows) and the engine cache being refreshed.
     */
    GetPermissionsSharedWithUser(grantee: UserInfo): Promise<NormalizedPermission[]>;
    /**
     * Every DashboardPermission row where this user is the effective grantor —
     * either explicitly (`SharedByUserID === grantor.ID`) or implicitly (the user
     * owns the dashboard and `SharedByUserID` is NULL — legacy shape from before
     * the grantor column was captured).
     */
    GetPermissionsGrantedByUser(grantor: UserInfo): Promise<NormalizedPermission[]>;
    GetResourcePermissions(resourceType: string, resourceId: string): Promise<NormalizedPermission[]>;
    private checkActionOnPermission;
    private resolveActions;
    private permRowActions;
    private buildDashboardPermission;
}
//# sourceMappingURL=DashboardPermissionProvider.d.ts.map