import { ConfigPropertyTypes } from '../../models';
/**
 * @category Service Module
 * @name /services/config-bean
 * @version 1.0.0
 * @author Mark Pomerant <mpomerant@coca-cola.com>
 *
 * Services that can be invoked to perform operations on Config Beans
 */
/**
 * The response from the server when an organization is
 * created or updated
 */
export interface ConfigBeanResponse {
    scopes: string[];
    details: ConfigBeanDetailsResponse[];
}
export interface ConfigScope {
    scope: string;
    overrides?: Record<string, ConfigPropertyTypes>;
}
export interface ConfigBeanDetailsResponse {
    bean: {
        [key: string]: ConfigPropertyTypes;
    };
    scopes: ConfigScope[];
    schema: SchemaResponse;
}
export interface ConfigBeanRequest {
    [k: string]: ConfigPropertyTypes;
}
export interface DecimalOption {
    decimals: number;
}
export declare const hasDecimals: (option?: any) => option is DecimalOption;
export type SchemaNodeType = "String" | "int" | "boolean" | "double";
export interface UnitSystemKeypadOptions {
    unitSystems: {
        [k: string]: {
            min: number;
            max: number;
            decimals: number;
        };
    };
    type: "unitSystemKeypad";
}
export interface UnitSystemListOptions {
    type: "unitSystemList";
    unitSystems: {
        [k: string]: {
            list: string[];
        };
    };
}
export interface UnitSystemRangeCountOptions {
    type: "unitSystemRangeCount";
    unitSystems: {
        [k: string]: {
            start: number;
            end: number;
            count: number;
            decimals: number;
        };
    };
}
export interface UnitSystemRangeIntervalOptions {
    type: "unitSystemRangeInterval";
    unitSystems: {
        [k: string]: {
            start: number;
            end: number;
            interval: number;
            decimals: number;
        };
    };
}
export interface KeypadOptions {
    min: number;
    max: number;
    decimals: number;
    type: "keypad";
}
export interface RangeCountOptions {
    type: "rangeCount";
    start: number;
    end: number;
    count: number;
    decimals: number;
}
export interface RangeIntervalOptions {
    type: "rangeInterval";
    start: number;
    end: number;
    interval: number;
    decimals: number;
}
export interface ListOptions {
    type: "list";
    list: string[];
}
export type SchemaOptionsType = KeypadOptions | RangeCountOptions | RangeIntervalOptions | ListOptions | UnitSystemKeypadOptions | UnitSystemListOptions | UnitSystemRangeCountOptions | UnitSystemRangeIntervalOptions;
export interface SchemaNode {
    type: SchemaNodeType;
    format?: string;
    options: SchemaOptionsType;
}
export interface EnumSchemaNode {
    type: "enum";
    format?: string;
    values: string[];
}
export type SchemaNodeDef = SchemaNode | EnumSchemaNode;
export interface SchemaResponse {
    paths: string[];
    schema: {
        [key: string]: SchemaNodeDef;
    };
}
export interface ConfigBeanUpdateRecord {
    attr: string;
    currentValue: string;
    previousValue: string;
}
export interface ConfigBeanUpdateResponse {
    changes: ConfigBeanUpdateRecord[];
    scopedChanges: ConfigBeanUpdateRecord[];
    errors: string[];
}
/**
 * Modifies an ConfigBean from the server based on the id.
 *
 * @param id - the id of the ConfigBean to be modified
 * @returns an empty response with status 200.
 */
export declare const modifyConfigBean: (id: string, model: ConfigBeanRequest, path?: string) => Promise<import('../../../core').KosServiceResponse<any> | undefined>;
/**
 * Modifies an ConfigBean from the server based on the id.
 *
 * @param id - the id of the ConfigBean to be modified
 * @returns an empty response with status 200.
 */
export declare const getConfigBean: (id: string, path?: string) => Promise<import('../../../core').KosServiceResponse<ConfigBeanResponse> | undefined>;
//# sourceMappingURL=index.d.ts.map