import { GranteeType, IMetadataProvider, NormalizedPermission, PermissionAction, PermissionCheckResult, PermissionProviderBase, UserInfo } from '@memberjunction/core';
/**
 * Wraps `MJ: Query Permissions` behind the unified {@link PermissionProviderBase} contract.
 *
 * Query permissions are role-only and use existence semantics: a row indicates the role
 * is allowed to execute the query; the absence of a row denies it. There are no CRUD flags.
 * This provider exposes `Execute` as the single canonical action.
 *
 * `resourceType` is `"Queries"`. `resourceId` is the query ID.
 */
export declare class QueryPermissionProvider extends PermissionProviderBase {
    readonly DomainName = "Query Permissions";
    readonly Description = "Role-based Execute permission on MJ queries. Row existence = permission granted.";
    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[]>;
    GetResourcePermissions(resourceType: string, resourceId: string, provider?: IMetadataProvider): Promise<NormalizedPermission[]>;
    private fetchPermissionsForQuery;
}
//# sourceMappingURL=QueryPermissionProvider.d.ts.map