import { Blueprint, Schemas } from 'optimal'; import { Optionable } from './types'; export declare abstract class Contract implements Optionable { /** Validated and configured options. */ readonly options: Readonly>; constructor(options?: T); get allowUnknown(): boolean; /** * Set an options object by merging the new partial and existing options * with the defined blueprint, while running all validation checks. * Freeze and return the options object. * * ```ts * object.configure({ name: 'Jil' }); * * object.configure((prevOptions) => ({ * nestedObject: { * ...prevOptions.nestedObject, * some: 'value', * }, * })); * ``` */ configure(options?: Partial | ((options: Required) => Partial)): Readonly>; /** * Define an `optimal` blueprint in which to validate and build the * options object passed to the constructor, or when manual setting. * * A boolean is passed as the 2nd argument to determine whether this is * validating on class instantiation (first time), or by calling * `configure()` (all other times). */ abstract blueprint(schemas: Schemas, onConstruction?: boolean): Blueprint; }