/** * MongoDB operation enum + esquema del formulario — una sola copia para la api, * el Dashboard y el broker. * * ── Lo que quita ── * La lista estaba escrita a mano **cinco veces sólo en la api** (tres en el DTO, * dos en la entidad) y otras tantas en el dashboard. Y de los siete valores, * el lienzo sólo conocía **cinco**: `findAll` y `findOneAndUpdate` no estaban en * sus mapas de etiqueta y color, así que se pintaban grises y con el nombre * crudo en camelCase mientras el panel sí les daba azul y ámbar. * * ── Lo fácil de Mongo ── * Al contrario que Drive o Calendar, aquí **no hay capa de renombrado**: el * `name` de cada param es la prop de la entidad tal cual, y el `apiUpdate` de la * página es un passthrough de una línea. Es la forma de guardado más simple de * la tanda. */ export declare const MONGO_OPERATIONS: readonly ["insertOne", "findOne", "findAll", "updateOne", "findOneAndUpdate", "deleteOne", "aggregate"]; export type MongoOperation = (typeof MONGO_OPERATIONS)[number]; /** Type guard — útil al validar entrada que no controlas (DTOs, tool calls). */ export declare function isMongoOperation(value: unknown): value is MongoOperation; export type MongoParamType = /** El `TemplateEditor` de JSON, con autocompletado de `{{payload.*}}`. */ 'jsonTemplate' /** El componente `UpdateBuilder` (arma `$set`, `$inc`… sin escribir JSON). */ | 'updateBuilder' /** * Un `Switch` que se guarda **al instante** (`updateFieldInstant`) y se lee de * la entidad, no de los locales. Se conserva así porque es como estaba. */ | 'booleanInstant'; export interface MongoParamSpec { /** La prop de la entidad. Sin renombrado: es también la clave del cable. */ name: string; label: string; type: MongoParamType; /** Texto de ayuda. Llano: el paquete no lleva React. */ description?: string; placeholder?: string; /** Sólo para `jsonTemplate`: la altura del editor. */ minHeight?: number; maxHeight?: number; } export interface MongoOperationSpec { /** La del desplegable de la página de detalle: «Insert One». */ label: string; /** * La de la píldora estrecha del lienzo y del panel: «INSERT». * * **Son dos etiquetas a propósito**, como en Calendar: dos anchos distintos y * las dos se ven. Antes había una TERCERA convención, porque el panel pintaba * `operation.toUpperCase()` y decía «FINDONEANDUPDATE» donde el lienzo decía * «UPDATE». Ahora los dos leen esta. */ labelShort: string; /** Sub-línea del desplegable. */ description: string; /** Orden de pantalla. */ params: MongoParamSpec[]; } export declare const MONGO_OPERATION_SPECS: Record;