import { DeepPartial } from "ts-essentials"; import { BasePluginType } from "../plugins/pluginTypes"; import { Awaitable } from "../utils"; import { MatchParams } from "./configUtils"; import { AnyPluginData } from "../plugins/PluginData"; import { z } from "zod"; export declare const permissionLevelsSchema: z.ZodRecord; export type PermissionLevels = z.TypeOf; export declare const pluginBaseOptionsSchema: z.ZodObject<{ config: z.ZodOptional; overrides: z.ZodOptional, "many">>; }, "strip", z.ZodTypeAny, { config?: unknown; overrides?: Record[] | undefined; }, { config?: unknown; overrides?: Record[] | undefined; }>; export declare const baseConfigSchema: z.ZodObject<{ prefix: z.ZodOptional; levels: z.ZodOptional>; plugins: z.ZodOptional; overrides: z.ZodOptional, "many">>; }, "strip", z.ZodTypeAny, { config?: unknown; overrides?: Record[] | undefined; }, { config?: unknown; overrides?: Record[] | undefined; }>, "many">>; }, "strip", z.ZodTypeAny, { prefix?: string | undefined; levels?: Record | undefined; plugins?: { config?: unknown; overrides?: Record[] | undefined; }[] | undefined; }, { prefix?: string | undefined; levels?: Record | undefined; plugins?: { config?: unknown; overrides?: Record[] | undefined; }[] | undefined; }>; export type BaseConfig = z.TypeOf; export interface PluginOptions { config: TPluginType["config"]; overrides?: Array>; } export interface PluginOverride extends PluginOverrideCriteria { config?: DeepPartial; } export interface PluginOverrideCriteria { channel?: string | string[] | null; category?: string | string[] | null; level?: string | string[] | null; user?: string | string[] | null; role?: string | string[] | null; thread?: string | string[] | null; is_thread?: boolean | null; thread_type?: "public" | "private" | null; all?: Array> | null; any?: Array> | null; not?: PluginOverrideCriteria | null; extra?: TCustomOverrideCriteria | null; } export type ConfigParserFn = (input: unknown) => Awaitable; export type CustomOverrideCriteriaFunctions> = { [KCriterion in keyof TPluginData["_pluginType"]["customOverrideCriteria"]]: (pluginData: TPluginData, matchParams: MatchParams, value: NonNullable) => Awaitable; };