import * as react_jsx_runtime from 'react/jsx-runtime';
import { ReactNode } from 'react';
import { a as LayoutControlSize, b as LayoutComponentProps } from './types-20Qhj-oo.js';
import { Layouts, SectionNameFor } from '@medusajs/admin-shared';
import { T as TableAdapter } from './table-adapters-DnG5KPvi.js';
import '@medusajs/types';
import '@medusajs/ui';

type LayoutEntryProps = {
    /** Stable identity for this entry. Survives component renames and minification. */
    id: string;
    children: ReactNode;
};
/**
 * Pins a stable identity to a layout entry. Use this to wrap sections whose
 * component name is unstable (subject to rename or minification), ensuring
 * any saved user preferences survive refactors.
 */
declare function LayoutEntry({ children }: LayoutEntryProps): react_jsx_runtime.JSX.Element;
declare namespace LayoutEntry {
    var displayName: string;
}

type LayoutComposerProps$1<TLayoutId extends Layouts, TData> = {
    /**
     * The prefix used to derive widget injection zones, typically corresponds to the page.
     * E.g. `"login"`, `"product.list"`, `"product.details"` etc.
     */
    widgetsZonePrefix: string;
    /**
     * The id of the layout that should be used to render the page. E.g `"core:two-column"` or `"core:single-column"`.
     */
    preferredLayoutId: TLayoutId;
    /**
     * The content to render in each section of the layout, keyed by the
     * section names valid for `preferredLayoutId`.
     */
    sections: Record<SectionNameFor<TLayoutId>, ReactNode>;
    /**
     * Data passed to the layout components(core + widgets) as props
     */
    data?: TData;
    /**
     * Whether to render an `Outlet` after the layout, used to render modals such as drawers and dialogs.
     *
     * @default true
     */
    hasOutlet?: boolean;
    /**
     * Stable id of the host this composer customizes (see `CUSTOMIZE_IDS`). The
     * central `CustomizerMenu` lists it and, when chosen, drives this composer
     * into edit mode. Composers for different hosts must use distinct ids; only
     * one composer per id is mounted at a time.
     *
     * @default CUSTOMIZE_IDS.PAGE
     */
    customizeId?: string;
    /**
     * Visual density of each entry's edit-mode overlay.
     * @default "default"
     */
    controlSize?: LayoutControlSize;
    /**
     * Skip widget injection zones entirely: no registered widgets are resolved
     * for `widgetsZonePrefix`, so only the core `sections` entries are composed.
     * Used by surfaces that are purely reorderable nav (e.g. the sidebars) where
     * extensions shouldn't inject content.
     *
     * @default false
     */
    disableWidgets?: boolean;
    /**
     * Optional props to pass to the layout component.
     */
    layoutProps?: Omit<LayoutComponentProps, "sections" | "data">;
};

type DataTableActionProps = {
    label: string;
    disabled?: boolean;
} & ({
    to: string;
} | {
    onClick: () => void;
});
interface ConfigurableDataTableProps<TData> {
    adapter: TableAdapter<TData>;
    heading?: string;
    subHeading?: string;
    pageSize?: number;
    queryPrefix?: string;
    layout?: "fill" | "auto";
    actions?: DataTableActionProps[];
}
declare function ConfigurableDataTable<TData>({ adapter, heading, subHeading, pageSize: pageSizeProp, queryPrefix: queryPrefixProp, layout, actions, }: ConfigurableDataTableProps<TData>): react_jsx_runtime.JSX.Element;

type LayoutComposerProps<TLayoutId extends Layouts, TData> = Omit<LayoutComposerProps$1<TLayoutId, TData>, "customizeId" | "controlSize">;
declare const LayoutComposer: (<TLayoutId extends Layouts, TData>({ widgetsZonePrefix, preferredLayoutId, sections, data, hasOutlet, disableWidgets, }: LayoutComposerProps<TLayoutId, TData>) => react_jsx_runtime.JSX.Element) & {
    Entry: typeof LayoutEntry;
};

export { ConfigurableDataTable, type ConfigurableDataTableProps, LayoutComponentProps, LayoutComposer };
