import type { DataAuditEntry, DataEventFieldChange, DataFieldSurface, DataFieldSourceLaunchBinding, DataRecordEditInput, DataFileRef, EventValueDigest, UserReferenceValue, WorkflowTaskSourceBinding } from 'openxiangda-contracts/browser'; import { type ReactNode } from 'react'; import { type WorkflowCandidateBinding } from '../platform-fields/user-candidate-context'; import type { WorkflowFileBinding } from '../../platform-client'; import type { DateTimeConstraints } from '../platform-fields/zoned-date-time'; export type SurfaceField = DataFieldSurface & { key: string; }; export declare function auditFieldCodes(entry: DataAuditEntry): string[]; export declare function auditFieldChange(entry: DataAuditEntry, fieldCode: string): DataEventFieldChange | undefined; export declare function isEventValueDigest(value: unknown): value is EventValueDigest; export declare function auditActorLabel(entry: DataAuditEntry): string | undefined; export declare function listSurfaceFields(fields: Record): { label: string; type: import("openxiangda-contracts").DataFieldType; widget: import("openxiangda-contracts").DataFieldSurfaceWidget; section?: string; requiredHint?: boolean; system?: boolean; hidden?: boolean; readCapabilities: string[]; createCapabilities: string[]; updateCapabilities: string[]; maxLength?: number; precision?: number; scale?: number; exactDecimal?: boolean; min?: number; max?: number; rangeBoundary?: import("openxiangda-contracts").DataRangeBoundary; maxCount?: number; maxSizeMb?: number; accept?: string | string[]; options?: import("openxiangda-contracts").DataFieldOption[]; list?: boolean; searchable?: boolean; sortable?: boolean; source?: import("openxiangda-contracts").DataFieldResourceSource; userCandidates?: import("openxiangda-contracts").DataFieldUserCandidates; timePrecision?: "minute" | "second"; serial?: { prefix?: string; digits?: number; start?: number; }; subtable?: { resourceCode: string; foreignKey: string; orderField: string; minRows?: number; maxRows?: number; }; key: string; }[]; export interface SurfaceFieldEditContext { field: SurfaceField; disabled: boolean; operation: 'create' | 'update'; resourceCode?: string; recordId?: string; expectedRevision?: number; workflowCandidateBinding?: WorkflowCandidateBinding; workflowFileBinding?: WorkflowFileBinding; } export interface SurfaceFieldValueContext { mobile?: boolean; field: SurfaceField; value: unknown; resourceCode?: string; workflowFileBinding?: WorkflowFileBinding; presentation?: 'default' | 'workflow-detail'; } export interface SurfaceFieldRenderers { /** Page picker assistance, independent of Native write validation. */ dateTimeConstraints?: Readonly>; /** Read-entry hints only; Native checks every file and resource independently. */ fileResourceCodes?: Readonly>; referenceLaunch?: DataFieldSourceLaunchBinding; referenceTask?: WorkflowTaskSourceBinding; /** Only edited values for ordinary saved-record source lookup; omitted uses server-held bindings. */ referenceBindings?: Readonly>; /** Search intent only; never part of a Native write or workflow payload. */ candidateScopeValues?: Readonly>; recordEditInput?: DataRecordEditInput; renderExtra?: (context: SurfaceFieldEditContext) => ReactNode; renderScope?: (context: SurfaceFieldEditContext) => ReactNode; renderSubtable?: (context: SurfaceFieldEditContext) => ReactNode; renderScopeFilter?: (context: SurfaceFilterContext) => ReactNode; renderFilter?: (context: SurfaceFilterContext) => ReactNode; upload?: (field: SurfaceField, file: File, recordId?: string, onRecovered?: (file: DataFileRef) => void) => Promise; signer?: UserReferenceValue; renderValue?: (context: SurfaceFieldValueContext) => ReactNode | undefined; } export interface SurfaceFilterContext { field: SurfaceField; resourceCode?: string; value: unknown; onChange: (value: unknown) => void; } /** Render a standard filter control from the same field surface used by forms. */ export declare function SurfaceFilterControl({ field, resourceCode, value, onChange, range, renderers, }: SurfaceFilterContext & { range?: boolean; renderers?: Pick; }): string | number | bigint | boolean | import("react/jsx-runtime").JSX.Element | Iterable | Promise> | Iterable | null | undefined> | null; export declare function SurfaceFieldControl({ field, disabled, operation, resourceCode, recordId, expectedRevision, workflowCandidateBinding, workflowFileBinding, renderers, }: SurfaceFieldEditContext & { renderers?: SurfaceFieldRenderers; }): import("react/jsx-runtime").JSX.Element; /** Mobile controls share canonical values and the form controller with desktop. */ export declare function MobileSurfaceFieldControl({ field, disabled, operation, resourceCode, recordId, expectedRevision, workflowCandidateBinding, workflowFileBinding, renderers, }: SurfaceFieldEditContext & { renderers?: SurfaceFieldRenderers; }): import("react/jsx-runtime").JSX.Element; export declare function SurfaceFieldValue({ field, value, resourceCode, workflowFileBinding, presentation, mobile, renderers, }: SurfaceFieldValueContext & { renderers?: SurfaceFieldRenderers; }): import("react/jsx-runtime").JSX.Element; export declare function SurfaceAuditFieldValue({ field, value, resourceCode, }: SurfaceFieldValueContext): import("react/jsx-runtime").JSX.Element; //# sourceMappingURL=SurfaceFields.d.ts.map