import type { BeanCollection } from '../context/context'; import type { GridOptions } from '../entities/gridOptions'; import type { ValidationModuleName } from '../interfaces/iModule'; import type { RowModelType } from '../interfaces/iRowModel'; /** Build the set of all property names that should be accepted without warning. */ export declare function buildAllValidNames(allProperties: string[], deprecations: Deprecations, propertyExceptions?: string[]): Set; export interface OptionsValidator { objectName: string; allProperties: string[]; /** Pre-computed set of all accepted property names (valid + deprecated + exceptions + Vue). */ allValidNames: Set; docsUrl?: `${string}/`; deprecations: Deprecations; validations: Validations; } export type Deprecations = Partial<{ [key in keyof T]: { version: string; message?: string; }; }>; type GetRequiredModule = (options: T, gridOptions: GridOptions, beans: BeanCollection) => ValidationModuleName | ValidationModuleName[] | null; export type RequiredModule = GetRequiredModule | ValidationModuleName | ValidationModuleName[]; export type ModuleValidation = { [key in keyof T]?: RequiredModule; }; export type Validations = { [key in keyof T]?: OptionsValidation; }; interface OptionsValidation { supportedRowModels?: RowModelType[]; dependencies?: RequiredOptions; validate?: (options: T, gridOptions: GridOptions, beans: BeanCollection) => string | null; /** Currently only supports boolean or number */ expectedType?: 'boolean' | 'number'; } export type DependentValues = { required: T[K][]; reason?: string; }; export type RequiredOptions = { [K in keyof T]: DependentValues; }; export {};