import { ModelFactory } from '../../../core';
import { ConfigBeanRequest, ConfigBeanResponse, ConfigBeanUpdateResponse, ConfigScope } from '../../services/config-bean';
import { IConfigBeanModel } from './config-bean-model';
import { IConfigBeanModelOptions } from './config-bean-types';
export declare function evaluateScopes(scopes?: ConfigScope[]): {};
/**
 * Maps a `ConfigBeanResponse` DTO to an `IConfigBeanModel` object.
 *
 * @remarks
 * This function will run as a mobx action ensuring that all observers are notified
 * if any changes are made.
 *
 * @params dto - the Data Transfer Object received from the backend
 * @params model - the IModel to be update
 *
 * @internal
 * @category Config Bean
 */
export declare const mapDtoToConfigBeanModel: (dto: ConfigBeanResponse, model: IConfigBeanModel) => void;
export declare const mapUpdateDtoToConfigBeanModel: (dto: ConfigBeanUpdateResponse, model: IConfigBeanModel) => void;
/**
 * Maps a `IConfigBeanModel` to a `ConfigBeanRequest` DTO that can be sent to the
 * server as part of a service request.
 *
 * @remarks
 * This function will perform any type conversion or data mapping required
 * by the `ConfigBeanRequest`.
 *
 * @params model - instance of the `IConfigBeanModel`
 * @returns - a valid `ConfigBeanRequest` that can be used to
 * instantiate a new model.
 *
 * @internal
 * @group KOS Model
 * @category Configuration
 */
export declare const mapConfigBeanModelToDto: (model: IConfigBeanModel) => ConfigBeanRequest;
/**
 * Curried function that will produce a function that can be used to retreive or create
 * new instances of a `IConfigBeanModel` given an ID and options.
 *
 * @remarks
 * This serves as a conveinience allowing for models to consumers to use a shorthand method when
 * multiple models need to be created.
 * The first level of function will accept a KOS Model Factory and return a function that can accept a single
 * model ID parameeter.  This will return a factory function that can accept a model options parameter and
 * instantiate a new instance of a model or retreive a an existing model.
 *
 * @param factory - the model factory to be used
 * @returns - an instance of the `IConfigBeanModel` that was either created
 * or retrieved from the KOS Model framework if already existing.
 *
 * @internal
 * @group KOS Model
 * @category Configuration
 */
export declare const buildConfigBeanModel: (factory: ModelFactory<IConfigBeanModel, IConfigBeanModelOptions>) => (modelId: string) => (configBeanOptions: IConfigBeanModelOptions) => IConfigBeanModel;
//# sourceMappingURL=config-bean-model-builder.d.ts.map