/** @packageDocumentation
 * @module Core
 */
import { BeEvent } from "@itwin/core-bentley";
import { RegisteredRuleset, Ruleset } from "@itwin/presentation-common";
/**
 * Presentation ruleset registry.
 * @public
 */
export interface RulesetManager {
    /**
     * An event invoked one a ruleset is modified using [[modify]] function.
     */
    onRulesetModified: BeEvent<(curr: RegisteredRuleset, prev: Ruleset) => void>;
    /**
     * Get a ruleset with the specified id.
     */
    get(id: string): Promise<RegisteredRuleset | undefined>;
    /**
     * Register the supplied ruleset
     */
    add(ruleset: Ruleset): Promise<RegisteredRuleset>;
    /**
     * Modify the given pre-registered ruleset
     */
    modify(ruleset: RegisteredRuleset, newRules: Omit<Ruleset, "id">): Promise<RegisteredRuleset>;
    /**
     * Unregister the supplied ruleset
     */
    remove(ruleset: RegisteredRuleset | [string, string]): Promise<boolean>;
    /**
     * Remove all rulesets registered in this session.
     */
    clear(): Promise<void>;
}
/** @internal */
export declare class RulesetManagerImpl implements RulesetManager {
    private _clientRulesets;
    onRulesetModified: BeEvent<(curr: RegisteredRuleset, prev: Ruleset) => void>;
    static create(): RulesetManagerImpl;
    /**
     * Get a ruleset with the specified id.
     */
    get(id: string): Promise<RegisteredRuleset | undefined>;
    /**
     * Register the supplied ruleset
     */
    add(ruleset: Ruleset): Promise<RegisteredRuleset>;
    /**
     * Modifies the given pre-registered ruleset
     */
    modify(ruleset: RegisteredRuleset, newRules: Omit<Ruleset, "id">): Promise<RegisteredRuleset>;
    /**
     * Unregister the supplied ruleset
     */
    remove(ruleset: RegisteredRuleset | [string, string]): Promise<boolean>;
    /**
     * Remove all rulesets registered in this session.
     */
    clear(): Promise<void>;
}
//# sourceMappingURL=RulesetManager.d.ts.map