/**
 * Permission checking functionality
 *
 * Provides utilities for checking permissions against a defined permission set.
 *
 * @module @jay-js/system/guard/core/permissions
 */
import type { THasPermission, TPermission } from "../types";
/**
 * Checks if a role has permission to perform an action on a subject
 *
 * @param permissions - Array of permission objects to check against
 * @param role - The role to check permissions for
 * @param subject - The subject to check permissions on
 * @param action - The action to check permission for
 * @param attribute - Optional attribute to check permission for
 * @returns Object with granted status and available attributes
 *
 * @example
 * ```ts
 * const result = hasPermission(userPermissions, 'editor', 'articles', 'edit');
 * if (result.granted) {
 *   // Allow the user to edit articles
 * }
 * ```
 */
export declare function hasPermission(permissions: TPermission[], role: string, subject: string, action: string, attribute?: string): THasPermission;
