import React from "react";
import { Entity, EntityCollection, EntityStatus, User } from "../types";
import { EntityFormProps } from "../form";
export declare const MAIN_TAB_VALUE = "__main_##Q$SC^#S6";
export declare const JSON_TAB_VALUE = "__json";
export type OnUpdateParams = {
    entity: Entity<any>;
    status: EntityStatus;
    path: string;
    entityId?: string;
    selectedTab?: string;
    collection: EntityCollection<any>;
};
export type BarActionsParams = {
    values: object;
    status: EntityStatus;
    path: string;
    entityId?: string;
};
export type OnTabChangeParams<M extends Record<string, any>> = {
    path: string;
    entityId?: string;
    selectedTab?: string;
    collection: EntityCollection<M>;
};
export interface EntityEditViewProps<M extends Record<string, any>> {
    /**
     * The database path of the entity, e.g. "users" or "products".
     */
    path: string;
    /**
     * The navigation path to the entity.
     */
    fullIdPath?: string;
    collection: EntityCollection<M>;
    entityId?: string;
    databaseId?: string;
    copy?: boolean;
    selectedTab?: string;
    parentCollectionIds: string[];
    onValuesModified?: (modified: boolean, values: M) => void;
    onSaved?: (params: OnUpdateParams) => void;
    onTabChange?: (props: OnTabChangeParams<M>) => void;
    layout?: "side_panel" | "full_screen";
    barActions?: (params: BarActionsParams) => React.ReactNode;
    formProps?: Partial<EntityFormProps<M>>;
}
/**
 * This is the default view that is used as the content of a side panel when
 * an entity is opened.
 */
export declare function EntityEditView<M extends Record<string, any>, USER extends User>({ entityId, ...props }: EntityEditViewProps<M>): import("react/jsx-runtime").JSX.Element;
export declare function EntityEditViewInner<M extends Record<string, any>>({ path, fullIdPath, entityId, selectedTab: selectedTabProp, collection, parentCollectionIds, onValuesModified, onSaved, onTabChange, entity, initialDirtyValues, dataLoading, layout, barActions, status, setStatus, formProps, canEdit }: EntityEditViewProps<M> & {
    entity?: Entity<M>;
    initialDirtyValues?: Partial<M>;
    dataLoading: boolean;
    status: EntityStatus;
    setStatus: (status: EntityStatus) => void;
    canEdit?: boolean;
}): import("react/jsx-runtime").JSX.Element;
