import type { PartiallyUndefined } from '../utils/type-helpers/index.js';
import type { ExtractionPlugin, SimplificationPlugin } from '../plugin/index.js';
export * from './all-of.js';
export * from './any-of.js';
export * from './not.js';
export * from './const.js';
export * from './type.js';
export * from './number/index.js';
export * from './string.js';
export * from './array.js';
export * from './object/index.js';
export * from './ref.js';
export * from './if-then-else.js';
export * from './one-of.js';
export declare const builtInExtractionPlugins: {
    readonly not: ExtractionPlugin;
    readonly allOf: ExtractionPlugin;
    readonly anyOf: ExtractionPlugin;
    readonly type: ExtractionPlugin;
    readonly const: ExtractionPlugin;
    readonly number: ExtractionPlugin;
    readonly string: ExtractionPlugin;
    readonly object: ExtractionPlugin;
    readonly array: ExtractionPlugin;
    readonly ifThenElse: ExtractionPlugin;
    readonly oneOf: ExtractionPlugin;
    readonly ref: ExtractionPlugin;
};
/** @useDeclaredType */
export type BuiltInExtractionPluginId = keyof typeof builtInExtractionPlugins;
export type BuiltInExtractionPluginOverrides = PartiallyUndefined<Record<BuiltInExtractionPluginId, ExtractionPlugin>>;
export declare function getBuiltInExtractionPlugins(overrides: BuiltInExtractionPluginOverrides): ExtractionPlugin[];
export declare const builtInSimplificationPlugins: {
    readonly const: {
        readonly appliesToJSONSchemaType: undefined;
        readonly mergeableKeywords: [];
        readonly simplify: ({ atomicSchemasByConstructor, validateConst, }: import("../plugin/plugin.js").SimplificationPluginArguments) => import("../plugin/plugin.js").ConjunctionSchema<{
            allOf?: never[];
        }>;
    };
    readonly number: {
        readonly appliesToJSONSchemaType: "number";
        readonly mergeableKeywords: ["minimum", "maximum", "multipleOf"];
        readonly simplify: ({ atomicSchemasByConstructor, negatedAtomicSchemasByConstructor, validateConst, }: import("../plugin/plugin.js").SimplificationPluginArguments) => import("../plugin/plugin.js").ConjunctionSchema<import("./number/number.js").NumberConjunctionSchema>;
    };
    readonly string: {
        readonly appliesToJSONSchemaType: "string";
        readonly mergeableKeywords: ["minLength", "maxLength"];
        readonly simplify: ({ schemaDescribesEmptySet, atomicSchemasByConstructor, negatedAtomicSchemasByConstructor, validateConst, }: import("../plugin/plugin.js").SimplificationPluginArguments) => import("../plugin/plugin.js").ConjunctionSchema<import("./string.js").StringConjunctionSchema>;
    };
    readonly object: {
        readonly appliesToJSONSchemaType: "object";
        readonly mergeableKeywords: ["properties", "patternProperties", "required", "propertyNames", "minProperties", "maxProperties"];
        readonly simplify: ({ atomicSchemasByConstructor, negatedAtomicSchemasByConstructor, schemaDescribesEmptySet, options, splitToRawDNF, validateConst, }: import("../plugin/plugin.js").SimplificationPluginArguments) => import("../plugin/plugin.js").ConjunctionSchema<import("./object/object.js").ObjectConjunctionSchema>;
    };
    readonly array: {
        readonly appliesToJSONSchemaType: "array";
        readonly mergeableKeywords: ["items", "prefixItems", "minItems", "maxItems", "uniqueItems"];
        readonly simplify: ({ atomicSchemasByConstructor, negatedAtomicSchemasByConstructor, schemaDescribesEmptySet, validateConst, }: import("../plugin/plugin.js").SimplificationPluginArguments) => import("../plugin/plugin.js").ConjunctionSchema<import("./array.js").ArrayConjunctionSchema>;
    };
    readonly ref: {
        readonly appliesToJSONSchemaType: undefined;
        readonly mergeableKeywords: [];
        readonly simplify: ({ atomicSchemasByConstructor, negatedAtomicSchemasByConstructor, }: import("../plugin/plugin.js").SimplificationPluginArguments) => import("../plugin/plugin.js").ConjunctionSchema<import("./ref.js").RefConjunctionSchema>;
    };
};
export type BuiltInSimplificationPlugins = typeof builtInSimplificationPlugins;
/** @useDeclaredType */
export type BuiltInSimplificationPluginId = keyof BuiltInSimplificationPlugins;
export type BuiltInSimplificationPlugin = BuiltInSimplificationPlugins[BuiltInSimplificationPluginId];
export type BuiltInSimplificationPluginOverrides = PartiallyUndefined<Record<BuiltInSimplificationPluginId, SimplificationPlugin>>;
export declare function getBuiltInSimplificationPlugins<Overrides extends BuiltInSimplificationPluginOverrides>(overrides: Overrides): (BuiltInSimplificationPlugin | NonNullable<Overrides[BuiltInSimplificationPluginId]>)[];
