import type { TFilterCriteria } from '@neon.id/query'; import type { NActionDef, NRoleDef } from '@neon.id/types'; import type { NAbility, NPermit } from '..'; import type { TGuardCheckOptions, TGuardDefinition, TGuardInstance } from './guard.types'; export declare class Guard implements TGuardInstance { id?: string; roles: NRoleDef[]; actions?: NActionDef[]; data?: TFilterCriteria>; private constructor(); /** * Define a new guard. */ static define(def: TGuardDefinition): Guard; /** * Check if guard allows public. */ get isPublic(): boolean; /** * Check if guard allows any user. */ get isUser(): boolean; /** * Check ability and data against guard conditions. */ check(ability: NAbility.Instance, data?: Record, opts?: TGuardCheckOptions): NPermit.Result; private checkRole; private checkAction; private checkData; private parseCriteria; private log; }