import { FieldData } from "./field-data";
import { FieldRegistration } from "./field-registration";
import { Entity } from "../metadata/entity";
import { InjectionToken } from "@angular/core";

/**
 * A service that provides fields data. The data contains
 * a type of settings for the provided field and a read-only
 * and write versions of the component, which will be used
 * respectively in read-only mode and write mode of the item.
 *
 * @export
 * @class FieldsProvider
 */
export declare interface FieldsProvider {
    /**
     * By given data, returns the field registration that contains the
     * read-only component, the write component and the settings type.
     *
     * @param {FieldData} data
     * @returns {FieldRegistration}
     * @memberof FieldsProvider
     */
    overrideField(data: FieldData): FieldRegistration;
}

export declare const FIELDS_PROVIDER_TOKEN: InjectionToken<string>;
