import { ConfigDeclarationParameter } from './configDeclarationParameter'; import { ConfigDeclarationJsonSchema } from './configDeclarationJsonSchema'; /** * Configuration declaration * * Each property of instance is a parameter declaration */ export default class ConfigDeclaration { constructor(that?: Object); /** * Includes declarations from specified configuration. */ include(that: Object, forced?: boolean): this; /** * Declares parameters * * @param parameters Other configuration to include * @param forced Overwrite parameter declaration * @return This instance (for chaining purposes) */ parameters(parameters: ConfigDeclaration | Object, forced?: boolean): this; /** * Declares a parameter * * @param name Parameter name * @param definition Parameter definition * @param forced * @return This instance (for chaining purposes) */ parameter(name: string, definition: {} | ConfigDeclarationParameter, forced?: boolean): this; /** * Marks specified parameter as mutually-exclusive in regards to other specified parameters. * * @param name Parameter name * @param otherNames Conflicted parameter names * @return This instance (for chaining purposes) */ conflicts(name: string, ...otherNames: string[]): ConfigDeclaration; /** * Returns copy of this declaration, extended using specified extender * * @param modifier An modifier functor * @return Copy of this declaration */ extended(modifier?: Function): ConfigDeclaration; /** * Converts to JSON schema * * @returns {Object} JSON schema */ toJSONSchema(): ConfigDeclarationJsonSchema; }