import { Type } from './Type.js';
import type { RecordShape } from './shape/RecordShape.js';
export interface Schema<Definitions = {}> extends Record<string, Type> {
}
export declare namespace Schema {
    function referencedViews(schema: Schema): Array<string>;
    function validate(schema: Schema): void;
    function shapes(schema: Schema): Record<string, RecordShape>;
    function typeNames(schema: Schema): Map<Type, string>;
    function contained(schema: Schema, contains: Array<string | Type>): Array<string>;
}
export interface SchemaTypes {
    [key: string]: Type;
}
export interface SchemaOptions<Definition> {
    types: Definition;
}
export declare function schema<Definition extends SchemaTypes>(options: SchemaOptions<Definition>): Definition;
