import React from 'react';
import type { WidgetDefinition } from '../../types';
import { type DashboardCategoryInput } from './categories';
interface WidgetBuilderProps {
isOpen: boolean;
onClose: () => void;
onSuccess: (widget: WidgetDefinition) => void;
mode?: 'create' | 'edit';
editWidget?: WidgetDefinition;
isAdmin?: boolean;
/**
* Capacidad de cambiar la EXPOSICION de un widget: a quien alcanza (`es_privado`,
* `roles_permitidos`) y con que autoridad se pide su dato (`is_internal`). Es lo que gobierna el
* paso de permisos del asistente.
*
* Se separa de `isAdmin` porque el backend la exige por separado, y en modo edicion manda lo que
* diga el propio widget (`permissions.can_publish`). Sin valor cae a `isAdmin`, que es el
* comportamiento historico.
*/
canPublishWidgets?: boolean;
showExternalEndpoints?: boolean;
/**
* 🔴 **`availableRoles` se RETIRÓ el 2026-09-14 (F3).** El paso de permisos ya no pregunta la
* vertical: la determina la categorÃa. El tipo sigue exportado porque el **diálogo de acceso** lo
* usa para ofrecer «que lo vea todo ventas» como sujeto de un grant — que es repartir algo que ya
* existe, otro acto —, pero el Constructor no lo recibe.
*
* El vocabulario de categorÃas trae ahora la **pareja** categorÃa→vertical. Ver
* `DashboardCategoryOption`.
*/
availableCategories?: DashboardCategoryInput[];
/**
* 🔴 **F4.4 — «ofrece abrir el diálogo de acceso».** Se llama cuando el indicador se creó pero el
* reparto quedó a medias, con el widget ya creado.
*
* Sin esto el aviso serÃa un callejón: se le dice a alguien que su indicador quedó
* restringido y sin nadie dentro, y se le deja buscarlo en el catálogo. El host conecta esto con
* su diálogo de acceso; si no lo declara, el asistente solo cierra.
*/
onNeedsAccessDialog?: (widget: WidgetDefinition) => void;
}
export declare const WidgetBuilder: React.FC;
export {};
//# sourceMappingURL=WidgetBuilder.d.ts.map