/** * Server-side data builder for the field-policy AdminShell destination. * * This deliberately mirrors the `@happyvertical/smrt-svelte/settings` * contract structurally. Fields does not depend on smrt-svelte, and only the * selected object carries its browser-safe field definitions. */ import type { SmrtClassOptions } from '@happyvertical/smrt-core'; import { FieldPolicyCollection } from './collections/FieldPolicyCollection.js'; import type { FieldPolicyAuditSnapshot } from './types.js'; export interface FieldPolicyCatalogField { type: 'text' | 'integer' | 'decimal' | 'boolean' | 'datetime' | 'json' | 'foreignKey' | 'crossPackageRef'; required?: boolean; default?: unknown; description?: string; ui?: { basic?: boolean; group?: string; order?: number; locked?: boolean; widget?: 'textarea' | 'currency' | 'email' | 'url' | 'phone'; format?: 'money' | 'date' | 'datetime' | 'percent'; }; } export interface FieldPolicySummaryItem { id: string; label: string; description?: string; eyebrow?: string; status?: string; objectRef: string; fieldName: string; className: string; packageName: string; } export interface FieldPolicyDetailItem extends FieldPolicySummaryItem { fields: Record; } /** Structural SettingsCatalogPage mirror; `SettingsCatalog` accepts it directly. */ export interface FieldPolicySettingsCatalogPage { items: FieldPolicySummaryItem[]; selected: FieldPolicyDetailItem | null; query: string; page: number; pageSize: number; total: number; } export interface FieldPolicyCatalogObjectSummary { objectRef: string; className: string; packageName: string; fieldCount: number; } export interface FieldPolicySettingsCatalogData { page: FieldPolicySettingsCatalogPage; audit: FieldPolicyAuditSnapshot; objects: FieldPolicyCatalogObjectSummary[]; packages: string[]; filters: { packageFilter: string | null; objectFilter: string | null; customizedOnly: boolean; }; } export interface FieldPolicySettingsCatalogQuery { query?: string | null; page?: number | null; pageSize?: number | null; selectedId?: string | null; packageFilter?: string | null; objectFilter?: string | null; customizedOnly?: boolean; } export interface BuildFieldPolicySettingsCatalogOptions extends FieldPolicySettingsCatalogQuery { db?: SmrtClassOptions['db']; collection?: FieldPolicyCollection; objectRefs?: string[]; } export declare function fieldPolicyCatalogItemId(objectRef: string, fieldName: string): string; export declare function parseFieldPolicyCatalogQuery(params: URLSearchParams): FieldPolicySettingsCatalogQuery; export declare function buildFieldPolicySettingsCatalog(options: BuildFieldPolicySettingsCatalogOptions): Promise; //# sourceMappingURL=settings-catalog.d.ts.map