import { AtomicSchemaObject, type LogicalCombinationOfLiterals } from '../atomic-schema/index.js';
import type { ExtractionPlugin, ConjunctionSchema } from '../plugin/index.js';
export declare const internalRefKey: unique symbol;
export declare abstract class RefAtomicSchemaBase extends AtomicSchemaObject {
    protected readonly [internalRefKey]: string;
    constructor($ref: string);
    negate(): LogicalCombinationOfLiterals;
}
export type RefAtomicSchemaJSON = {
    $ref: string;
};
export declare class RefAtomicSchema extends RefAtomicSchemaBase {
    get $ref(): string;
    toJSONSchema(): RefAtomicSchemaJSON;
}
export declare const refExtraction: ExtractionPlugin;
export type RefConjunctionSchemaAllOfElement = RefAtomicSchemaJSON | {
    not: RefAtomicSchemaJSON;
};
export type RefConjunctionSchemaAllOf = RefConjunctionSchemaAllOfElement[];
export type RefConjunctionSchema = {
    allOf?: RefConjunctionSchemaAllOf;
};
export declare const refSimplification: {
    readonly appliesToJSONSchemaType: undefined;
    readonly mergeableKeywords: [];
    readonly simplify: ({ atomicSchemasByConstructor, negatedAtomicSchemasByConstructor, }: import("../plugin/plugin.js").SimplificationPluginArguments) => ConjunctionSchema<RefConjunctionSchema>;
};
