import { CustomOverrideCriteriaFunctions, PluginOptions, PluginOverride } from "./configTypes"; import { AnyPluginData } from "../plugins/PluginData"; import { BasePluginType } from "../plugins/pluginTypes"; export interface MatchParams = Record> { level?: number | null; userId?: string | null; memberRoles?: string[] | null; channelId?: string | null; categoryId?: string | null; threadId?: string | null; isThread?: boolean | null; extra?: TExtra; } /** * Basic deep merge with support for specifying merge "rules" with key prefixes. * For example, prefixing the key of a property containing an array with "+" would concat the two arrays, while * a prefix of "-" would calculate the difference ("remove items"). * * Using '*' as a key will set that value to all known properties in the config at that time. * This is mostly used for permissions. * * @param {T} target * @param {T} sources * @returns {T} */ export declare function mergeConfig>(...sources: any[]): T; /** * Returns matching plugin options for the specified matchParams based on overrides */ export declare function getMatchingPluginConfig = AnyPluginData, TPluginOptions extends PluginOptions = PluginOptions>(pluginData: TPluginData, pluginOptions: TPluginOptions, matchParams: MatchParams, customOverrideCriteriaFunctions?: CustomOverrideCriteriaFunctions): Promise; /** * Each criteria "block" ({ level: "...", channel: "..." }) matches only if *all* criteria in it match. */ export declare function evaluateOverrideCriteria>(pluginData: TPluginData, criteria: PluginOverride, matchParams: MatchParams, customOverrideCriteriaFunctions?: CustomOverrideCriteriaFunctions): Promise;