import type { JSONSchema4 } from "./types/json-schema";
import type { JSONSchema as LinkedJSONSchema } from "./types/JSONSchema";
export type { EnumJSONSchema, JSONSchema, NamedEnumJSONSchema, CustomTypeJSONSchema, } from "./types/JSONSchema";
export interface FormatOptions {
    bracketSpacing?: boolean;
    printWidth?: number;
    semi?: boolean;
    singleQuote?: boolean;
    tabWidth?: number;
    trailingComma?: "none" | "es5" | "all";
    useTabs?: boolean;
}
export type RefOptions = Record<string, unknown>;
export interface Options {
    /**
     * Preserved for upstream API compatibility.
     *
     * Executor's vendored compiler only resolves same-document JSON Pointer
     * `$ref`s and never fetches or reads external references, so this option is
     * accepted but ignored.
     */
    $refOptions: RefOptions;
    /**
     * Default value for additionalProperties, when it is not explicitly set.
     */
    additionalProperties: boolean;
    /**
     * Disclaimer comment prepended to the top of each generated file.
     */
    bannerComment: string;
    /**
     * Custom function to provide a type name for a given schema
     */
    customName?: (schema: LinkedJSONSchema, keyNameFromDefinition: string | undefined) => string | undefined;
    /**
     * Preserved for upstream API compatibility. External refs are not resolved,
     * so this option is accepted but ignored.
     */
    cwd: string;
    /**
     * Declare external schemas referenced via `$ref`?
     */
    declareExternallyReferenced: boolean;
    /**
     * Prepend enums with [`const`](https://www.typescriptlang.org/docs/handbook/enums.html#computed-and-constant-members)?
     */
    enableConstEnums: boolean;
    /**
     * Create enums from JSON enums with eponymous keys
     */
    inferStringEnumKeysFromValues: boolean;
    /**
     * Format code? Preserved for upstream API compatibility.
     *
     * Executor's vendored compiler does not bundle a formatter, so this option is
     * accepted but does not change output.
     */
    format: boolean;
    /**
     * Ignore maxItems and minItems for `array` types, preventing tuples being generated.
     */
    ignoreMinAndMaxItems: boolean;
    /**
     * Maximum number of unioned tuples to emit when representing bounded-size array types,
     * before falling back to emitting unbounded arrays. Increase this to improve precision
     * of emitted types, decrease it to improve performance, or set it to `-1` to ignore
     * `minItems` and `maxItems`.
     */
    maxItems: number;
    /**
     * Append all index signatures with `| undefined` so that they are strictly typed.
     *
     * This is required to be compatible with `strictNullChecks`.
     */
    strictIndexSignatures: boolean;
    /**
     * Formatting configuration. Preserved for upstream API compatibility.
     */
    style: FormatOptions;
    /**
     * Generate code for `definitions` that aren't referenced by the schema?
     */
    unreachableDefinitions: boolean;
    /**
     * Generate unknown type instead of any
     */
    unknownAny: boolean;
}
export declare const DEFAULT_OPTIONS: Options;
export declare function compile(schema: JSONSchema4, name: string, options?: Partial<Options>): string;
export declare class ValidationError extends Error {
}
//# sourceMappingURL=index.d.ts.map