import { EditResourceCustomFieldConfig } from "./edit-resource-config-custom-field";
import { EditResourceConfigDisplayMode } from "./edit-resource-config-display-mode";
import { EditResourcePropertyConfig } from "./edit-resource-property-config";
import { Layout } from "../../layout/layout";
import { TableConfig } from "../../table/table-models";
import { EditResourceLayoutType } from "../edit-resource-constants";
import { MultiListSection } from "../../components/multi-list/multi-list-types";
/**
 * Configuration for the layout and display of tabs/related resources
 */
export interface EditResourceTabsConfig {
    /** Layout type controlling the overall page structure (navigation/tabs). */
    layoutType: EditResourceLayoutType;
    /** Indicates whether the comment tab should be visible. */
    isCommentTabVisible: boolean;
}
/**
 * Configuration options for customizing the appearance and behavior of the {@link EditResource} component
 *
 * @see {@link EditResourceProps} for component props that accept this configuration
 */
export interface EditResourceConfig {
    /**
     * Map of property configurations keyed by property name
     */
    propertyConfigs: Map<string, EditResourcePropertyConfig>;
    /**
     * Controls the overall display mode of the edit form
     */
    displayMode?: EditResourceConfigDisplayMode;
    /**
     * Hides the save button in the top section
     */
    hideTopSaveButton?: boolean;
    /**
     * Hides the save button in the bottom section
     */
    hideBottomSaveButton?: boolean;
    /**
     * Hides the cancel button in the top section
     */
    hideTopCancelButton?: boolean;
    /**
     * Hides the cancel button in the bottom section
     */
    hideBottomCancelButton?: boolean;
    /**
     * Hides the delete button in the top section
     */
    hideTopDeleteButton?: boolean;
    /**
     * Hides the delete button in the bottom section
     */
    hideBottomDeleteButton?: boolean;
    /**
     * Hides the expand button for showing hidden properties
     */
    hideExpandButton?: boolean;
    /**
     * Shows management links for the resource
     */
    showManageLinks?: boolean;
    /**
     * When true, only properties explicitly defined in propertyConfigs with visible=true will be displayed
     */
    whitelistPropertiesOnly?: boolean;
    /**
     * Controls visibility of the resource title
     */
    showTitle?: boolean;
    /**
     * Controls visibility of the back navigation arrow
     */
    showBackArrow?: boolean;
    /**
     * Controls visibility of the resource image
     */
    showResourceImage?: boolean;
    /**
     * When true, enables the ability to change the image Url of the resource
     */
    showImageUrlField?: boolean;
    /**
     * Array of custom field configurations to be displayed within the edit resource form
     */
    customActionFields?: EditResourceCustomFieldConfig[];
    /**
     * Custom Url to navigate to when the back arrow is clicked
     * Only used when {@link EditResourceConfig.showBackArrow} is true
     */
    backArrowUrl?: string;
    /**
     * Allows customizing the component's layout.
     */
    unstableLayout?: Layout;
    /**
     * Determines whether the saving status indicator is displayed
     */
    showSavingStatus?: boolean;
    /**
     * Configuration for the table displayed in tabs (for related resources)
     */
    tableConfig?: TableConfig;
    /**
     * Array of additional resource names to be included in tabs
     */
    additionalResources?: string[];
    /**
     * Array of related resource names that should be hidden
     */
    hiddenRelatedResources?: string[];
    /**
     * Configuration for tabs layout and visibility
     */
    tabsConfig?: EditResourceTabsConfig;
    multiListSections?: MultiListSection[];
    className?: string;
}
