import { EventEmitter } from '../../../stencil-public-runtime';
import { FormComponent, FormInfo } from '@limetech/lime-elements';
import { LimeWebComponentPlatform, LimeWebComponentContext, LimeWebComponent, PropertyType } from '@limetech/lime-web-components';
type DependentPropertyField = {
    limetype: string;
    allowedPropertyTypes?: PropertyType[];
};
/**
 * Limetype Field Component
 *
 * A dropdown selector for choosing a limetype (object type) from the available
 * limetypes in the system.
 *
 * This component:
 * - Displays all limetypes with their icons and localized names
 * - Supports restricting to a specific list of limetypes
 * - Can update dependent property-path fields when selection changes
 * - Implements the FormComponent interface for use in forms
 *
 * Common use cases:
 * - Selecting which object type to query in a lime query builder
 * - Choosing target limetype for relations
 * - Configuring limetype-dependent settings
 *
 * @private
 */
export declare class LimetypeField implements LimeWebComponent, FormComponent<string> {
    /**
     * @inheritdoc
     */
    platform: LimeWebComponentPlatform;
    /**
     * @inheritdoc
     */
    context: LimeWebComponentContext;
    /**
     * @inheritdoc
     */
    label: string;
    /**
     * @inheritdoc
     */
    required: boolean;
    /**
     * @inheritdoc
     */
    readonly: boolean;
    /**
     * @inheritdoc
     */
    disabled: boolean;
    /**
     * @inheritdoc
     */
    value: string;
    /**
     * @inheritdoc
     */
    helperText: string;
    /**
     * @inheritdoc
     */
    invalid: boolean;
    /**
     * The limetypes to choose from
     */
    limetypes?: string[];
    /**
     * A list of property fields that should be updated when the selected limetype changes.
     */
    propertyFields: DependentPropertyField[];
    /**
     * The name of this field. May be used as reference when a property mapping
     * depends on the selected limetype.
     */
    fieldName: string;
    /**
     * @inheritdoc
     */
    formInfo?: FormInfo;
    /**
     * @inheritdoc
     */
    change: EventEmitter<string>;
    private collator;
    componentWillLoad(): void;
    componentShouldUpdate(newValue: FormInfo | undefined, oldValue: FormInfo | undefined, property: string): boolean;
    render(): any;
    componentWillRender(): void;
    private getLimeTypes;
    private handleChange;
    private updatePropertyFields;
    private get limeTypeRepository();
}
export {};
//# sourceMappingURL=limetype-field.d.ts.map