import { ModelMapping } from '../editor-context';
import { Property } from '../services/property.util';
export declare const ADD_UI_SCHEMA: 'jsonforms/treeWithDetail/ADD_UISCHEMA';
export declare const SET_CONTAINER_PROPERTIES: 'jsonforms/treeWithDetail/SET_CONTAINER_PROPERTIES';
export declare const getUiSchemata: (state: any) => any;
export declare const getImageMapping: (state: any) => any;
export declare const getLabelMapping: (state: any) => any;
export declare const getModelMapping: (state: any) => any;
export declare const getResources: (state: any) => any;
export declare const getIdentifyingProperty: (state: any) => any;
export declare const getContainerProperties: (state: any) => any;
export interface AddUiSchemaAction {
    type: 'jsonforms/treeWithDetail/ADD_UISCHEMA';
    schemaId: string;
    uiSchema: any;
}
export interface SetContainerPropertiesAction {
    type: 'jsonforms/treeWithDetail/SET_CONTAINER_PROPERTIES';
    containerProperties: {
        [schemaId: string]: Property[];
    };
}
/**
 * Creates an action to add a detail UI schema for the Tree with detail.
 * If there already is a UI Schema for the given schema id,
 * it is overwritten with the given one.
 *
 * @param schemaId The JSON Schema's id for which the UI Schema will be used
 * @param uiSchema The UI Schema defining the rendered detail view
 */
export declare const addUiSchema: (schemaId: string, uiSchema: any) => AddUiSchemaAction;
/**
 * Creates an action to set calculated container properties for the given schema id
 * If there already are container properties for the given schema id
 * they are overwritten with the given one
 *
 * @param containerProperties
 * @returns {SetContainerPropertiesAction}
 */
export declare const setContainerProperties: (containerProperties: {
    [schemaId: string]: Property[];
}) => SetContainerPropertiesAction;
export interface TreeWithDetailState {
    uiSchemata?: {
        [uiSchemaId: string]: any;
    };
    /**
     * Configures the image mappings for the types defined in the treeWithDetail's schema.
     * An image mapping maps from a schema id to the schema's image name.
     *  This name is used to resolve the css style that configure a label
     * for instances of the type in the containment tree.
     * Both the id and the name are configured as Strings.
     */
    imageMapping?: {
        [schemaId: string]: string;
    };
    /**
     * Configures the label mappings for the types defined in the treeWithDetail's schema.
     * A label mapping maps from a schema id to a property defined in this schema.
     * This property defines the name of a rendered object in the containment tree.
     * Both the id and the property name are configured as Strings.
     */
    labelMapping?: {
        [schemaId: string]: string;
    };
    /**
     * The model mapping defines mappings from a property value to a type.
     * Thereby, the model mapping defines which property is considered.
     * This property is the same for all types.
     * A mapping maps from a specific value of this property to a schema id.
     * If an element contains a mapped value in the defined property,
     * it is assumed to be of the type defined by the mapped schema id.
     *
     * A model mapping is necessary for all types used in anyOf sections of a schema
     * in order to determine which type objects of a "anyOf-property" belong to.
     */
    modelMapping?: ModelMapping;
    /**
     * Property names define the name of the resource.
     * This name is used in reference configurations to define
     * which data is searched for reference targets.
     * The content is the actual data.
     * e.g.
     * {
     *   'data1': { "name": "Robert", "age": 25 },
     *   'data2': { "name": "Bello", "species": "dog", "sex": "male"}
     * }
     */
    resources?: {
        [property: string]: Object;
    };
    /**
     * The identifying property is the name of the property that contains
     * a data element's unique ID when id-based referencing is used.
     */
    identifyingProperty?: string;
    /**
     * Stores calculated container properties for a given schema
     */
    containerProperties: {
        [schemaId: string]: Property[];
    };
}
export declare const treeWithDetailReducer: (state: TreeWithDetailState, action: any) => TreeWithDetailState;
