import { PropertyMeta } from "../../core/property-meta";
import { ResourceMeta } from "../../core/resource-meta";
import { VoidFunc } from "../../../../fd-toolbox/functions/internal-getter-setter-functions";
import React, { ReactNode } from "react";
import { WithId } from "../../../../fd-toolbox-core/types/resource-with-id";
import { WithParentContextName } from "../../../../fd-toolbox/types/with-parent-context-name";
import { BrowserDisplayMode } from "../../../../fd-toolbox/enums/enums";
/**
 * Props for the {@link ManyToManyBrowser} component.
 * Extends {@link WithParentContextName} for parent context integration.
 */
export interface ManyToManyBrowserProps extends WithParentContextName {
    /** Whether the browser field is required */
    required: boolean;
    /** Metadata for the property being browsed */
    propertyMeta: PropertyMeta;
    /** Whether the field is in error state (for aria-invalid / styling) */
    invalid?: boolean;
    /** Event handler called when selected resources have been loaded */
    onSelectedResourceIdsChange?: VoidFunc<string[]>;
    /**
     * Event handler called when the selected resources change.
     * First parameter: array of selected resources {@link WithId}
     * Second parameter: resource metadata {@link ResourceMeta}
     */
    onChange?: VoidFunc<WithId[], ResourceMeta>;
    /**
     * Display mode of the browser.
     * {@link browserDisplayModes.default} shows the standard browser view.
     * {@link browserDisplayModes.short} shows the compact view.
     */
    displayMode?: BrowserDisplayMode;
    /** Whether the browser is disabled */
    disabled?: boolean;
    /** Whether the browser is read-only */
    readOnly?: boolean;
    /** Id of the resource to which this browser is related */
    relatedResourceId?: string;
    /** Child elements to render inside the input (typically action buttons) */
    children?: ReactNode;
}
/**
 * Many-to-many browser component for multiple resource selection with integrated search dialog.
 * Used for many-to-many relationships.
 * {@link ManyToManyBrowserProps} - component props
 */
export declare function ManyToManyBrowser({ required, propertyMeta, onChange, parentContextName: parentContextNameProp, displayMode, disabled, readOnly, relatedResourceId, invalid, onSelectedResourceIdsChange, children: icons, }: ManyToManyBrowserProps): React.JSX.Element;
