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;
}