import { ChangeEventHandler, ReactNode } from "react"; import type { TextFieldProps } from "@mui/material"; import type { SelectChangeEvent } from "@mui/material/Select"; import { MediumStatus } from "./MediumPage.types"; import type { MediumPageProps, Medium } from "./MediumPage.types"; export type Option = { value: string; label: string; }; export type InputFieldEntry = { name: string; textFieldProps: Omit & { value: string; onChange?: ChangeEventHandler; select?: false | undefined; }; options?: undefined; selectOnChange?: undefined; }; export type SelectFieldEntry = { name: string; textFieldProps: Omit & { value: string; select: true; }; options: Option[]; selectOnChange: (event: SelectChangeEvent, child?: ReactNode) => void; }; type TextOrSelectOnChange = ChangeEventHandler | ((event: SelectChangeEvent, child: React.ReactNode) => void); export type FieldEntry = { name: string; selectOnChange?: (event: SelectChangeEvent, child: React.ReactNode) => void; textFieldProps?: Omit & { value: string; onChange?: TextOrSelectOnChange; }; options?: { label: string; value: string; }[]; }; declare const useMediumPage: (props: MediumPageProps) => { data: { form: { rank: { id: string; name: string; description?: string | undefined; level?: number | undefined; }; status?: MediumStatus | undefined; initiationDate?: string | undefined; }; formFields: FieldEntry[]; canSave: boolean; isDirty: boolean; isLoading: boolean; }; fns: { setRank: (rankId: string) => void; setStatus: (status?: Medium["status"]) => void; setInitiationDate: (date?: string) => void; handleSave: () => void; handleBack: () => void; handleChange: ChangeEventHandler; }; }; export default useMediumPage;