import { type CustomFormat, type Options, type Schema, Validator, type ValidatorResult } from 'jsonschema';
import { type JsonObject } from 'type-fest';
import { type BlockDefinition } from './index.js';
interface ValidatorFactoryOptions {
    schemas: Record<string, Schema>;
    customFormats?: Record<string, CustomFormat>;
}
export declare class BaseValidatorFactory {
    static readonly defaultOptions: Options;
    static readonly defaultCustomFormats: {
        int32: () => boolean;
        int64: () => boolean;
        float: () => boolean;
        double: () => boolean;
        byte: () => boolean;
        binary: () => boolean;
        password: () => boolean;
    };
    private schemas;
    private customFormats;
    constructor({ customFormats, schemas }: ValidatorFactoryOptions);
    build(): Validator;
}
export declare class BlockExampleValidator {
    private validator;
    constructor();
    validate(example: BlockDefinition): ValidatorResult;
}
interface BlockParamInstanceValidatorOptions {
    listeners?: string[];
    emitters?: string[];
    actions?: string[];
}
export declare class BlockParamInstanceValidator {
    private validator;
    private emitterNames;
    private listenerNames;
    constructor({ actions, emitters, listeners, }?: BlockParamInstanceValidatorOptions);
    validateParametersInstance(instance: JsonObject, schema: Schema): [ValidatorResult, Set<string>];
}
export declare class BlockParamSchemaValidator {
    private validator;
    constructor();
    validateParamSchema(paramSchema: Schema): ValidatorResult;
}
export declare class AppValidator {
    private validator;
    constructor();
    validateApp(app: unknown): ValidatorResult;
}
export declare class RemapperValidator {
    private validator;
    constructor();
    validateRemapper(remapper: unknown): ValidatorResult;
}
export {};
