import type { IASTNode, ITypeDeclaration, IRegistry, IObjectTypeEntry, IOperatorDef } from './types.js.js';
import type { ResolvedOptions } from './options.js.js';
export declare class Base {
    dynType: import("./registry.js.js").TypeDeclaration;
    optionalType: import("./registry.js.js").TypeDeclaration;
    stringType: import("./registry.js.js").TypeDeclaration;
    numberType: import("./registry.js.js").TypeDeclaration;
    boolType: import("./registry.js.js").TypeDeclaration;
    nullType: import("./registry.js.js").TypeDeclaration;
    listType: import("./registry.js.js").TypeDeclaration;
    mapType: import("./registry.js.js").TypeDeclaration;
    opts: ResolvedOptions;
    registry: IRegistry;
    objectTypes: Map<string, IObjectTypeEntry>;
    objectTypesByConstructor: Map<object, IObjectTypeEntry>;
    createError: (code: string | {
        code?: string;
        message: string;
        node?: IASTNode;
        cause?: unknown;
    }, message?: string, node?: IASTNode) => Error;
    constructor(opts: {
        registry: IRegistry;
        opts: ResolvedOptions;
    });
    getType(typeName: string): ITypeDeclaration;
    debugType(v: unknown): ITypeDeclaration;
}
export declare const OPERATORS: Record<string, IOperatorDef>;
