import { Blueprint } from './types';
export default class Schema<T extends object> {
    blueprint: Blueprint<T>;
    currentPath: string;
    currentValue: unknown;
    filePath: string;
    initialStruct: Partial<T>;
    parentPath: string;
    parentStruct: unknown;
    struct: Partial<T>;
    schemaName: string;
    unknown: boolean;
    constructor(blueprint: Blueprint<T>);
    /**
     * Allow unknown fields in the schema struct.
     */
    allowUnknown(): this;
    /**
     * Recursively validation and build the schema object based on the blueprint.
     */
    build(struct: Partial<T>, pathPrefix?: string): Required<T>;
    /**
     * Set a unique file name or path for this schema to appear in error messages.
     */
    setFile(name: string): this;
    /**
     * Set a unique name for this schema to appear in error messages.
     */
    setName(name: string): this;
}
