import { JSONSchema } from '@expo/schema-utils';
import { ValidationError } from './Error';
interface Meta {
    asset?: boolean;
    dimensions?: {
        width: number;
        height: number;
    };
    square?: boolean;
    contentTypePattern?: string;
    contentTypeHuman?: string;
}
interface SchemerOptions {
    rootDir?: string;
}
interface AssetField {
    fieldPath: string;
    data: string;
    meta: Meta;
}
interface SchemaUtilsError {
    message: string;
    path: string;
    keyword: string;
    value: unknown;
}
export { SchemerError, ValidationError, ErrorCodes, type ErrorCode } from './Error';
export default class Schemer {
    options: SchemerOptions;
    schema: JSONSchema;
    rootDir: string;
    manualValidationErrors: ValidationError[];
    schemaValidationErrors: ValidationError[];
    constructor(schema: JSONSchema, options?: SchemerOptions);
    _formatValidationError({ keyword, path, value, message }: SchemaUtilsError): ValidationError;
    getErrors(): ValidationError[];
    _throwOnErrors(): void;
    validateAll(data: any): Promise<void>;
    validateAssetsAsync(data: any): Promise<void>;
    validateSchemaAsync(data: any): Promise<void>;
    _validateSchema(data: any): void;
    _validateAssetsAsync(data: any): Promise<void>;
    _validateImageAsync({ fieldPath, data, meta }: AssetField): Promise<void>;
    _validateDirectoryAsync({ fieldPath, data, meta }: AssetField): Promise<void>;
    _validateAssetAsync({ fieldPath, data, meta }: AssetField): Promise<void>;
}
