import { EntityRegistry, IEntityRegistry, } from '@civ-clone/core-registry/EntityRegistry'; import { IConstructor } from '@civ-clone/core-registry/Registry'; import Rule from './Rule'; declare type RuleArgs = T extends Rule ? C : never; declare type RuleReturn = T extends Rule ? R : never; export interface IRuleRegistry< T extends Rule = Rule, P extends any[] = any[], R = any > extends IEntityRegistry { get(ruleType: IConstructor): RuleType[]; invalidateCache(rule: T | IConstructor): void; process( ruleType: IConstructor, ...args: RuleArgs ): RuleReturn[]; } export declare class RuleRegistry extends EntityRegistry implements IRuleRegistry { #private; constructor(); entries(): Rule[]; get(ruleType: IConstructor): RuleType[]; invalidateCache(rule: Rule | IConstructor): void; process( ruleType: IConstructor, ...args: RuleArgs ): RuleReturn[]; register(...rules: Rule[]): void; unregister(...rules: Rule[]): void; } export declare const instance: RuleRegistry; export default RuleRegistry;