export interface HrmsPermissionNode {
    canView?: boolean;
    canViewById?: boolean;
    canAdd?: boolean;
    canEdit?: boolean;
    canDelete?: boolean;
    /**
     * Field names the current user is NOT allowed to see on this resource.
     * Populated from the `r + :param` entry's `attributes.not_allowed` array.
     * Falls back to the `r + :nop` entry when no :param entry exists (old format).
     */
    notAllowedAttributes?: string[];
    /**
     * Filter keys the current user is NOT allowed to apply on this resource.
     * Populated from the `r + :param` entry's `filters.not_allowed` array.
     * Falls back to the `r + :nop` entry when no :param entry exists (old format).
     */
    notAllowedFilters?: string[];
    /**
     * Dynamic action map for any compound operation path.
     * Key = camelCase of the named segments extracted from the operation.
     *
     * Examples:
     *   ":param/status"                  → actions.status
     *   ":param/send"                    → actions.send
     *   ":param/contracts/:param_id"     → actions.contracts
     *   ":param/documents/:param_id/verify" → actions.documentsVerify
     *   "public/welcome/:param/reject"   → stored on sub-node "publicWelcome".actions.reject
     *   "public/welcome/:param/accept"   → stored on sub-node "publicWelcome".actions.accept
     */
    actions?: Record<string, boolean>;
    [subRoute: string]: HrmsPermissionNode | boolean | Record<string, boolean> | string[] | undefined;
}
export type HrmsPermissionTree = Record<string, HrmsPermissionNode>;
export declare function buildHrmsPermissionTree(raw: Record<string, any>): HrmsPermissionTree;
