import type { M } from "ts-algebra";
import type { JSONSchema7 as WritableJSONSchema7, JSONSchema7Reference as WritableJSONSchema7Reference, JSONSchema7Extension, ExtendedJSONSchema7 as WritableExtendedJSONSchema7, ExtendedJSONSchema7Reference as WritableExtendedJSONSchema7Reference, UnextendJSONSchema7, FromSchemaOptions, FromSchemaDefaultOptions, FromExtendedSchemaOptions } from "./definitions";
import type { ParseOptions } from "./parse-options";
import type { ParseSchema } from "./parse-schema";
import type { Readonly, Writable } from "./type-utils";
export type { DeserializationPattern, FromSchemaOptions, FromExtendedSchemaOptions, FromSchemaDefaultOptions, JSONSchema7Extension, } from "./definitions";
export type { $Compiler, Compiler, $Validator, Validator } from "./utils";
export { wrapCompilerAsTypeGuard, wrapValidatorAsTypeGuard, asConst, } from "./utils";
export declare type JSONSchema7 = WritableJSONSchema7 | Readonly<WritableJSONSchema7>;
export declare type ExtendedJSONSchema7<EXTENSION extends JSONSchema7Extension> = WritableExtendedJSONSchema7<EXTENSION> | Readonly<WritableExtendedJSONSchema7<EXTENSION>>;
export declare type JSONSchema7Reference = WritableJSONSchema7Reference | Readonly<WritableJSONSchema7Reference>;
export declare type ExtendedJSONSchema7Reference<EXTENSION extends JSONSchema7Extension> = WritableExtendedJSONSchema7Reference<EXTENSION> | Readonly<WritableExtendedJSONSchema7Reference<EXTENSION>>;
export declare type JSONSchema = JSONSchema7;
export declare type ExtendedJSONSchema<EXTENSION extends JSONSchema7Extension> = ExtendedJSONSchema7<EXTENSION>;
export declare type FromSchema<SCHEMA extends JSONSchema, OPTIONS extends FromSchemaOptions = FromSchemaDefaultOptions, WRITABLE_SCHEMA extends WritableJSONSchema7 = SCHEMA extends Record<string | number | symbol, unknown> ? Writable<SCHEMA> : SCHEMA> = M.$Resolve<ParseSchema<WRITABLE_SCHEMA, ParseOptions<WRITABLE_SCHEMA, OPTIONS>>>;
export declare type FromExtendedSchema<EXTENSION extends JSONSchema7Extension, SCHEMA extends ExtendedJSONSchema<EXTENSION>, OPTIONS extends FromExtendedSchemaOptions<EXTENSION> = FromSchemaDefaultOptions, UNEXTENDED_SCHEMA = UnextendJSONSchema7<EXTENSION, SCHEMA>> = UNEXTENDED_SCHEMA extends JSONSchema ? FromSchema<UNEXTENDED_SCHEMA, OPTIONS> : never;
