import { KosServiceResponse } from '../../../core';
import { ConfigBeanRequest, ConfigBeanResponse } from '../../services/config-bean';
/**
 * Actions that can be optionally passed into a ConfigBeanModel via
 * the options parameter and can override the default service to be called.
 *
 * @remarks
 * It is expected that implementations of `IKosDataModel` will have default
 * implementations of services that can be used in the event that these overrides are
 * not provided
 *
 * @group KOS Model
 * @category Configuration
 */
export interface IConfigBeanModelOptionsActions {
    /**
     * Service to update an ConfigBeanModel on the backend.
     *
     * @remarks
     * it is expected that the response will not provide any additional data and the
     * system should only assume that a successful response means that the request was
     * accepted by the backend.  Successful modification of the model will be broadcast
     * via the appropriate Event Topic.
     *
     * @returns - a Promise that resolves to an empty `KosServiceResponse`
     * @category Service
     */
    modifyConfigBean?: (id: string, model: ConfigBeanRequest) => Promise<KosServiceResponse<unknown> | undefined>;
    /**
     * Service to get a ConfigBeanModel on the backend.
     *
     * @remarks
     * it is expected that the response will not provide any additional data and the
     * system should only assume that a successful response means that the request was
     * accepted by the backend.  Successful modification of the model will be broadcast
     * via the appropriate Event Topic.
     *
     * @returns - a Promise that resolves to an empty `KosServiceResponse`
     * @category Service
     */
    getConfigBean?: (id: string) => Promise<KosServiceResponse<ConfigBeanResponse> | undefined>;
}
/**
 * Additional properties that can be passed into the constructor in order
 * to set initial values
 *
 * @remarks
 * Used to identify additional data that can be set on the model during
 * instantiation.  It is expected that implementers will set these properties
 * in the constructor.  The value <strong>might</strong> be overriden by
 * subsequent lifecycle methods or updates.
 *
 * @group KOS Model
 * @category Configuration
 * @internal
 */
export interface IConfigBeanModelOptions extends Partial<IConfigBeanModelOptionsActions> {
    serviceBasePath?: string;
    path: string;
}
export type ConfigBeanKeys<T> = keyof T;
/**
 * Represents the public interface of a `IConfigBeanModel`
 *
 * @group KOS Model
 * @category Configuration
 */
//# sourceMappingURL=config-bean-types.d.ts.map