import { type TableColumnsType } from 'antd'; import type { DataResourceSurface } from 'openxiangda-contracts/browser'; import { type ReactNode, type Dispatch, type SetStateAction } from 'react'; import { type SurfaceField } from './SurfaceFields'; import { type GenericResourceQuery, type ResourceListPreference } from '../../platform-client'; import type { GeneratedResourceDefinition } from './generated-resource-definition'; import { type ListDisplaySettings } from './ResourceListSettings'; import type { ResourceSort } from '../platform-fields/resource-query'; import { type ResourceRecord, type GeneratedResourceRoutePaths } from './resource-page-helpers'; export type { GeneratedResourceRoutePaths } from './resource-page-helpers'; import type { ResourceFormDrawerState } from './ResourceFormFrame'; export interface ResourceListControllerOptions { definition: GeneratedResourceDefinition; paths: GeneratedResourceRoutePaths; mobileFields?: readonly string[]; columnRenderers?: Readonly ReactNode>>; } /** 内置审计列始终可排序;其余平台系统列仅在作为 defaultSort 声明时进入排序选项。 */ export declare function systemSortFieldOptions(defaultSortField?: string): Array<{ key: string; label: string; }>; export interface ResourceListQueryState { defaultSorts: ResourceSort[]; draft: Partial; query: Partial; page: number; pageSize: number; sorts: ResourceSort[]; setDraft: Dispatch>>; setQuery: Dispatch>>; setPage: Dispatch>; setPageSize: Dispatch>; setSorts: Dispatch>; list: { result: { data: ResourceRecord[]; total: number | undefined; }; query: { isError: boolean; isFetching: boolean; error: unknown; refetch(): Promise; }; }; } export declare function GeneratedResourcePage({ resourceCode, viewCode, mode, variant, definition: providedDefinition, paths, ...lifecycle }: { resourceCode: string; viewCode?: string; mode?: 'list' | 'create' | 'edit' | 'detail'; variant?: 'desktop' | 'mobile'; definition?: GeneratedResourceDefinition; paths: GeneratedResourceRoutePaths; recordId?: string; onDismiss?(): void; onSaved?(id: string): void; onEdit?(): void; drawerState?: ResourceFormDrawerState; embedded?: boolean; }): import("react/jsx-runtime").JSX.Element; export declare function useResourceListController({ definition, paths, columnRenderers }: ResourceListControllerOptions): { definition: GeneratedResourceDefinition; paths: GeneratedResourceRoutePaths; navigate: import("react-router-dom").NavigateFunction; message: import("antd/es/message/interface").MessageInstance; hasCapability: (code: string) => boolean; hasReadCapability: (code: string) => boolean; identity: import("../../platform-client").RuntimeIdentity; code: string; name: string; surface: DataResourceSurface; capabilities: { read: string; create: string; update: string; delete: string; }; generated: { list?: boolean; detail?: boolean; create?: boolean; update?: boolean; delete?: boolean; }; workflowDefinitions: ReadonlyMap; contributions: Readonly>> | undefined; fields: { 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; }[]; readableFieldCodes: Set; state: ResourceListQueryState; exporting: boolean; setExporting: Dispatch>; moreFiltersOpen: boolean; setMoreFiltersOpen: Dispatch>; settingsOpen: boolean; setSettingsOpen: Dispatch>; formTarget: { mode: "create" | "edit"; id?: string; } | undefined; setFormTarget: Dispatch>; detailId: string | undefined; setDetailId: Dispatch>; workflowOpen: boolean; setWorkflowOpen: Dispatch>; correctionId: string | undefined; setCorrectionId: Dispatch>; entryFullScreen: boolean; setEntryFullScreen: Dispatch>; drawerState: { fullScreen: boolean; setFullScreen: Dispatch>; }; sortsOpen: boolean; setSortsOpen: Dispatch>; frozenKeys: string[]; setFrozenKeys: Dispatch>; columnOrder: string[]; setColumnOrder: Dispatch>; savedDisplay: string; setSavedDisplay: Dispatch>; density: "small" | "middle" | "large"; setDensity: Dispatch>; visibleColumnKeys: string[]; setVisibleColumnKeys: Dispatch>; selectedRowKeys: string[]; setSelectedRowKeys: Dispatch>; preferenceReady: boolean; setPreferenceReady: Dispatch>; preferenceSaving: boolean; setPreferenceSaving: Dispatch>; hasSavedPreference: boolean; setHasSavedPreference: Dispatch>; remove: import("@refinedev/core").UseDeleteReturnType; rows: ResourceRecord[]; formFields: SurfaceField[]; importWritableFieldCodes: string[]; standardWorkflows: import("../../workflow-definitions").GeneratedWorkflowDefinition[]; standardWorkflow: import("../../workflow-definitions").GeneratedWorkflowDefinition | undefined; workflowImportFieldCodes: string[]; batchWritableFields: SurfaceField[]; selectedRows: ResourceRecord[]; toolbarContributions: import("../../admin-contributions").AdminToolbarActionContribution[]; rowContributions: import("../../admin-contributions").AdminRowActionContribution>[]; canBatch: boolean | undefined; configurableColumns: { key: string; label: string; }[]; listKey: string; filterFields: string[]; filterDefinitions: SurfaceField[]; sortFields: { key: string; label: string; }[]; orderedKeys: string[]; display: ListDisplaySettings; displaySignature: string; displayDirty: boolean; preferencePayload: () => ResourceListPreference; firstVisibleBusinessField: { 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; } | undefined; columns: TableColumnsType; handleExport: () => Promise; changeDisplay: (settings: ListDisplaySettings) => void; savePreference: () => Promise; restorePreference: () => Promise; searchableFields: string[]; searchLabels: string[]; keywordPlaceholder: string; activeAdditionalCount: number; applyQuery: (next: Partial) => void; removeAppliedFilter: (key: string) => void; appliedConditions: { key: string; label: string; }[]; total: number; loading: boolean; error: unknown; refresh: () => Promise; }; export type ResourceListController = ReturnType; export declare function ResourceListContainer({ controller, children }: { controller: ResourceListController; children: ReactNode; }): import("react/jsx-runtime").JSX.Element; export declare function ResourceListError({ controller }: { controller: ResourceListController; }): import("react/jsx-runtime").JSX.Element; export declare function ResourceListAdvancedFilter({ controller }: { controller: ResourceListController; }): import("react/jsx-runtime").JSX.Element; export declare function ResourceListActions({ controller }: { controller: ResourceListController; }): import("react/jsx-runtime").JSX.Element; export declare function ResourceListQueryBar({ controller }: { controller: ResourceListController; }): import("react/jsx-runtime").JSX.Element; export declare function ResourceListToolbar({ controller }: { controller: ResourceListController; }): import("react/jsx-runtime").JSX.Element; export declare function ResourceListAppliedFilters({ controller }: { controller: ResourceListController; }): import("react/jsx-runtime").JSX.Element; export declare function ResourceListOverlays({ controller }: { controller: ResourceListController; }): import("react/jsx-runtime").JSX.Element; export declare function ResourceListBatchBar({ controller }: { controller: ResourceListController; }): import("react/jsx-runtime").JSX.Element; export declare function ResourceListTable({ controller }: { controller: ResourceListController; }): import("react/jsx-runtime").JSX.Element; export declare function useMobileResourceListController({ definition, paths, mobileFields }: ResourceListControllerOptions): { definition: GeneratedResourceDefinition; paths: GeneratedResourceRoutePaths; navigate: import("react-router-dom").NavigateFunction; hasCapability: (code: string) => boolean; hasReadCapability: (code: string) => boolean; identity: import("../../platform-client").RuntimeIdentity; message: import("antd/es/message/interface").MessageInstance; code: string; name: string; surface: DataResourceSurface; capabilities: { read: string; create: string; update: string; delete: string; }; generated: { list?: boolean; detail?: boolean; create?: boolean; update?: boolean; delete?: boolean; }; readableFieldCodes: Set; state: ResourceListQueryState; exporting: boolean; setExporting: Dispatch>; rows: ResourceRecord[]; fields: { 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; }[]; handleExport: () => Promise; total: number; loading: boolean; error: unknown; refresh: () => Promise; }; export type MobileResourceListController = ReturnType; export declare function MobileResourceListContainer({ controller, children, description }: { controller: MobileResourceListController; children: ReactNode; description?: string | false; }): import("react/jsx-runtime").JSX.Element; export declare function MobileResourceListError({ controller }: { controller: MobileResourceListController; }): import("react/jsx-runtime").JSX.Element; export declare function MobileResourceListQueryBar({ controller }: { controller: MobileResourceListController; }): import("react/jsx-runtime").JSX.Element; export declare function MobileResourceListCards({ controller }: { controller: MobileResourceListController; }): import("react/jsx-runtime").JSX.Element; export declare function MobileResourceListPagination({ controller }: { controller: MobileResourceListController; }): import("react/jsx-runtime").JSX.Element; export declare function GeneratedResourceDetailPage({ definition, paths, variant, recordId, onDismiss, onEdit, drawerState }: { definition: GeneratedResourceDefinition; paths: GeneratedResourceRoutePaths; variant: 'desktop' | 'mobile'; recordId?: string; onDismiss?: () => void; onEdit?: () => void; drawerState?: ResourceFormDrawerState; }): import("react/jsx-runtime").JSX.Element; //# sourceMappingURL=GeneratedResourceCrud.d.ts.map