import { AttributeMap } from './client'; export declare const ModelSchemaSymbol: unique symbol; export declare class Schema { readonly json: ModelSchema; constructor(json: ModelSchema); /** @override */ getAttributeSchema(attributeName: string): AttributeSchema | undefined; /** @override */ validate(object: any): void; /** @override */ validatePath(object: any, path: (number | string)[]): void | never; /** @override */ toJSON(object: any): T; } export declare class Schemaless extends Schema { private static readonly ATTRIBUTE_SCHEMA; /** @override */ getAttributeSchema(attributeName: string): AttributeSchema; /** @override */ toJSON(object: any): T; } export declare function getSchema(object: any): Schema; export declare function getSafeSchema(object: any): Schema; export type ModelSchema = { [K in keyof Required]: AttributeSchema; }; export type AttributeSchema = { test: (value: any, path: (string | number)[], source: any) => boolean; };