import { RuleIndex, RuleIndexOptions, RuleIndexOptionsOf, Public, RawRuleOf } from './RuleIndex'; import { Abilities, AbilityTuple, CanParameters } from './types'; import { Rule } from './Rule'; export interface AbilityOptions extends RuleIndexOptions { } export interface AnyAbility extends Public> { } export interface AbilityOptionsOf extends RuleIndexOptionsOf { } export type AbilityClass = new (rules?: RawRuleOf[], options?: AbilityOptionsOf) => T; export type CreateAbility = (rules?: RawRuleOf[], options?: AbilityOptionsOf) => T; export declare class PureAbility extends RuleIndex { can(...args: CanParameters): boolean; relevantRuleFor(...args: CanParameters): Rule | null; cannot(...args: CanParameters): boolean; }