import { CodeError } from '@iotize/common/error';
import { FirmwareState } from '@iotize/tap/service/impl/firmware';
import Ajv from 'ajv';
/**
 * TODO move to TapConfiguratorError
 */
export declare class ConfigKeyNotSupportedByFirmwareVersion extends Error {
    readonly configKey: string;
    readonly firmwareVersion: string;
    readonly constraint: {
        maxApiVersion?: string;
        minApiVersion?: string;
    };
    constructor(configKey: string, firmwareVersion: string, constraint: {
        maxApiVersion?: string;
        minApiVersion?: string;
    });
}
export declare class TapConfiguratorError extends CodeError<TapConfiguratorError.Code> {
    cause?: Error | undefined;
    constructor(code: TapConfiguratorError.Code, msg: string, cause?: Error | undefined);
    static internalError(msg: string, cause?: Error): TapConfiguratorError;
    static unexpectedFirmwareState(state: FirmwareState): TapConfiguratorError;
    static invalidConfiguration(message: string): TapConfiguratorError;
}
export declare namespace TapConfiguratorError {
    enum Code {
        UnexpectedFirmwareState = "TapConfiguratorErrorUnexpectedFirmwareState",
        InvalidSchema = "TapConfiguratorErrorIvalidSchema",
        InternalError = "TapConfiguratorErrorInternalError"
    }
    class InvalidSchemaError extends TapConfiguratorError {
        validate: Ajv.ValidateFunction;
        errors: Ajv.ErrorObject[];
        constructor(validate: Ajv.ValidateFunction);
        static ajvErrorsToString(errors: Ajv.ErrorObject[] | undefined | null): string;
    }
}
