import { DocumentData, QueryConstraint, QueryDocumentSnapshot, QueryFieldFilterConstraint } from "firebase/firestore"; import { AlumniConvoUser, ApplicantStage, Application, ArrowObject, CohortData, CustomFormSchema, ExternalEvent, FileItem, FlagCodes, InstituteData, OnboardingDocs, PlacementListing, Products, ProviderData, QueryObject, QueryObjectConstraint, Sorts, StudentPlacementData, UserData, UserGroupData, WorkflowStage } from "./typeDefinitions"; type StudentPlacementListParams = { user: UserData; student?: UserData; queryConstraint?: QueryConstraint[]; ql?: number; }; export declare function useStudentPlacementList({ user, student, queryConstraint, ql }: StudentPlacementListParams): { placements: { [key: string]: StudentPlacementData; } | undefined; loadMoreIcon: boolean; loadMorePlacements: (fStartPlacementAfter?: QueryDocumentSnapshot | undefined) => Promise; setQuery: import("react").Dispatch>; setInitialQueryLimit: import("react").Dispatch>; reset: () => void; changeQueryConstraints: (e: QueryConstraint[]) => void; }; type InstitutePlacementParams = { id?: string; user: UserData; cohort?: string; queryConstraint?: QueryConstraint[]; ql?: number; inProgress?: boolean; }; type NewInstitutePlacementParams = { id?: string; user: UserData; oId?: string; cohort?: string; queryConstraints?: QueryObjectConstraint[]; ql?: number; inProgress?: boolean; view: "list" | "table"; filters?: FilterObject; initialSort?: string; initialSearch?: string; uid?: string; }; export declare function useOldInstitutePlacementList({ id, user, cohort, queryConstraint, ql, inProgress }: InstitutePlacementParams): { placements: { [key: string]: StudentPlacementData & { student: UserData; }; } | undefined; loadMoreIcon: boolean; loadMorePlacements: (fStartPlacementAfter?: [QueryDocumentSnapshot | undefined, number] | undefined) => Promise; setQuery: import("react").Dispatch>; setInitialQueryLimit: import("react").Dispatch>; reset: () => void; changeQueryConstraints: (e: QueryConstraint[]) => void; }; export declare function useNewInstitutePlacementList({ id, user, oId, uid, filters, initialSort, initialSearch, view, cohort, queryConstraints, ql, inProgress }: NewInstitutePlacementParams): { tableData: { [key: string]: { [key: string]: unknown; }; } | undefined; page: number; loading: boolean | "loaded"; updateSearch: (search: string) => void; setFilters: (fFilters?: FilterObject) => void; setView: (v: "list" | "table") => void; pageUp: () => void; pageDown: () => void; sorts: { [label: string]: { value: string; direction: "asc" | "desc"; }; }; updateSort: (sortLabel?: string) => void; sort: [string, { value: string; direction: "asc" | "desc"; }] | undefined; }; type AlumniPaginatorParams = { user?: UserData; alumniConvoUser?: AlumniConvoUser; school?: string; queryConstraints?: QueryObjectConstraint[]; ql?: number; view: "list" | "table"; filters?: FilterObject; }; export declare function useAlumniPaginator({ user, alumniConvoUser, filters, view, school, queryConstraints, ql }: AlumniPaginatorParams): { tableData: { [key: string]: { [key: string]: unknown; }; } | undefined; page: number; loading: boolean | "loaded"; setFilters: (fFilters?: FilterObject) => void; setView: (v: "list" | "table") => void; pageUp: () => void; pageDown: () => void; sorts: { [label: string]: { value: string; direction: "asc" | "desc"; }; }; }; export declare function useVeryOldInstitutePlacementList({ user, cohort, queryConstraint, ql }: InstitutePlacementParams): { placements: { [key: string]: StudentPlacementData & { student: UserData; }; } | undefined; loadMoreIcon: boolean; loadMorePlacements: (fStartPlacementAfter?: ["placement" | "student" | undefined, string | undefined, QueryDocumentSnapshot | undefined, number] | undefined, fLoadedStudents?: string[]) => Promise; setQuery: import("react").Dispatch>; setInitialQueryLimit: import("react").Dispatch>; reset: () => void; changeQueryConstraints: (e: QueryConstraint[]) => void; }; export declare function useFilterTablePaginator({ data }: { data: { [key: string]: { [key: string]: unknown; }; } | QueryObject[]; }): { tableData: { [key: string]: { [key: string]: unknown; }; }; setPage: import("react").Dispatch>; setFilters: import("react").Dispatch>; page: number[]; }; export declare function useProviderContactPaginator({ data, institute, user, event, view, eventId, filters }: { data: QueryObject[]; institute: InstituteData; event?: Partial; eventId?: string; user: UserData; view: "list" | "table"; filters?: FilterObject; }): { tableData: { [key: string]: { [key: string]: unknown; }; } | undefined; pageUp: () => void; pageDown: () => void; setFilters: (fFilters?: FilterObject) => void; page: number; setView: (v: "list" | "table") => void; loading: boolean | "loaded"; }; type UserPaginatorParams = { user: UserData; cohort?: string; data: QueryObject[]; search?: string; userType: "Staff" | "Students"; sort?: string; }; type NewUserPaginatorParams = { user: UserData; cohort?: string; oId?: string; queryConstraints?: QueryObjectConstraint[]; ql?: number; view: "list" | "table"; filters?: FilterObject; institute: InstituteData; userType: "Staff" | "Students"; initialSort?: string; trustSchoolsIDs?: string[]; }; export declare function useNewCohortUserPaginator({ user, oId, trustSchoolsIDs, institute, initialSort, filters, view, cohort, queryConstraints, ql, userType }: NewUserPaginatorParams): { tableData: { [key: string]: { [key: string]: unknown; }; } | undefined; page: number; loading: boolean | "loaded"; updateSearch: (search: string) => void; setFilters: (fFilters?: FilterObject) => void; setView: (v: "list" | "table") => void; pageUp: () => void; pageDown: () => void; sorts: { [label: string]: { value: string; direction: "asc" | "desc"; }; }; updateSort: (sortLabel?: string) => void; sort: [string, { value: string; direction: "asc" | "desc"; }] | undefined; search: string | undefined; }; export declare function useCohortUserPaginator({ user, cohort, data, search, userType, sort }: UserPaginatorParams): { tableData: { [key: string]: { [key: string]: unknown; }; }; setPage: import("react").Dispatch>; page: number[]; setFilters: import("react").Dispatch>; setSort: (s: string) => void; sortOptions: string[]; sortBy: string | undefined; }; export declare function useAdmissionsPaginator({ data }: { data: { [key: string]: { [key: string]: unknown; }; }; }): { tableData: { [key: string]: { [key: string]: unknown; }; }; setPage: import("react").Dispatch>; setFilters: import("react").Dispatch>; }; type LazyLoadQueryParams = { path: string | string[]; constraints?: QueryConstraint | QueryConstraint[]; number: number; endResultsText?: string; noResultsText?: string; onItemFetched?: (item: unknown) => Promise<{ [key: string]: unknown; }>; }; export declare function useLazyLoadQueryList({ path, constraints, number, onItemFetched }: LazyLoadQueryParams): { items: { [key: string]: { [key: string]: unknown; }; }; loadMore: () => Promise; loadMoreIcon: boolean; reset: () => void; }; export declare function useProposePlacementRenderer({ user, orgContext, placement }: { user: UserData; orgContext?: { details: InstituteData; userGroups: { [key: string]: UserGroupData; }; placements: { [key: string]: StudentPlacementData; }; forms: { [key: string]: unknown; }; cohorts: { [key: string]: CohortData; }; }; placement?: StudentPlacementData; }): { student: UserData | undefined; disabled: boolean; stage: "address" | "review" | "provider" | "dates"; formData: StudentPlacementData | undefined; complete: boolean; cohort: CohortData | undefined; businessSectionComplete: boolean; addressSectionComplete: boolean; placementSectionComplete: boolean; setBusinessSectionComplete: import("react").Dispatch>; setAddressSectionComplete: import("react").Dispatch>; setPlacementSectionComplete: import("react").Dispatch>; proposePlacement: (draft?: boolean) => Promise<{ data: any; }>; deletePlacement: (id: string) => Promise; setStudent: import("react").Dispatch>; submitSection: (type: "dates" | "provider" | "address", data: { [key: string]: unknown; }) => void; setFormData: import("react").Dispatch>; resetFormData: () => void; setStage: import("react").Dispatch>; setComplete: import("react").Dispatch>; }; export declare const useRefDimensions: () => { dimensions: { width: number; height: number; }; refCallback: (node: HTMLDivElement) => void; }; type CreateCohortRendererParams = { oId: string; product: Products; initialData?: CohortData; }; export type CreateCohortStages = "info" | "name" | "placementType" | "database" | "review"; export declare function useCreateCohortRenderer({ oId, product, initialData }: CreateCohortRendererParams): { submitCohort: () => void; submitSection: (e?: { [key: string]: unknown; }) => void; back: () => void; setCohortData: import("react").Dispatch>; deleteCohort: () => Promise; cohortData: CohortData; cohortId: string | undefined; }; type UserUploadParams = { userType: "Staff" | "Students" | "eventStudents"; user: UserData; onComplete?: (e: string) => void; cohortId?: string; userGroupId?: string; shareNameWithReferralLeaderboardConsent?: string; product: Products; oId: string; event?: Partial; eventId?: string; }; export declare function useUserUploadHandler({ product, oId, event, eventId, userType, user, onComplete, userGroupId, cohortId }: UserUploadParams): { uploadUsers: (users: { email?: string; parentEmail?: string; year: number; [key: string]: unknown; }[]) => Promise; alert: { severity: "warning" | "error" | "success" | "info"; msg: string; } | undefined; onChange: () => void; }; type WorkflowEditorParams = { user: UserData; initialData?: WorkflowStage[] | ApplicantStage[]; onSubmit: (e: { workflow: WorkflowStage[]; includedFiles: string[]; includedForms: string[]; }) => void; cohortId?: string; product?: Products; oId?: string; }; export declare function useWorkflowEditor({ user, initialData, onSubmit, cohortId }: WorkflowEditorParams): { filePopupActive: boolean; files: { name: string; url: string; }[]; uploadFile: (files: any[]) => Promise; addNode: ({ userType, nextStage, prevStage }?: { userType?: "Students" | "Staff" | "Provider" | "Parent"; nextStage?: number; prevStage?: number; }) => number; onDelete: (id?: number) => Promise; arrows: ArrowObject[]; onChange: (path: (string | number)[], value: unknown) => void; error: string | undefined; includedFiles: string[]; onMoveEnd: (id: number, currentRef?: HTMLDivElement) => void; addEdgePoint: (id: number, existingEdgePoint: number) => void; newEdgePoint: number | undefined; setTutorialActive: import("react").Dispatch>; setFilePopupActive: import("react").Dispatch>; includedForms: string[]; submitWorkflow: (workflow?: WorkflowStage[] | ApplicantStage[], callOnComplete?: boolean) => Promise; openPopup: () => void; snackbar: string | undefined; setSnackbar: import("react").Dispatch>; setMousePosFunc: (e: React.MouseEvent) => void; mousePos: { x: number; y: number; } | undefined; tutorialActive: boolean; onDeleteArrow: (data: ArrowObject) => void; workflowNodes: WorkflowStage[]; containerRef: import("react").RefObject; setError: import("react").Dispatch>; setArrows: import("react").Dispatch>; setWorkflowNodes: import("react").Dispatch>; }; type ApplicantWorkflowEditorParams = { user: UserData; initialData?: ApplicantStage[]; onSubmit: (e: { workflow: ApplicantStage[]; includedFiles: string[]; includedForms: string[]; }) => void; workflowId?: string; product?: Products; oId?: string; }; export declare function useApplicantWorkflowEditor({ user, initialData, onSubmit, workflowId }: ApplicantWorkflowEditorParams): { filePopupActive: boolean; uploadFile: (files: any[]) => Promise; addNode: ({ userType, nextStage, prevStage }?: { userType?: "Students" | "Staff"; nextStage?: number; prevStage?: number; }) => number; onDelete: (id?: number) => Promise; arrows: ArrowObject[]; onChange: (path: (string | number)[], value: unknown) => void; error: string | undefined; includedFiles: string[]; onMoveEnd: (id: number, currentRef?: HTMLDivElement) => void; addEdgePoint: (id: number, existingEdgePoint: number) => void; newEdgePoint: number | undefined; setTutorialActive: import("react").Dispatch>; setFilePopupActive: import("react").Dispatch>; includedForms: string[]; submitWorkflow: (workflow?: ApplicantStage[], callOnComplete?: boolean) => Promise; openPopup: () => void; snackbar: string | undefined; setSnackbar: import("react").Dispatch>; setMousePosFunc: (e: React.MouseEvent) => void; mousePos: { x: number; y: number; } | undefined; tutorialActive: boolean; onDeleteArrow: (data: ArrowObject) => void; workflowNodes: ApplicantStage[]; containerRef: import("react").RefObject; setError: import("react").Dispatch>; setArrows: import("react").Dispatch>; setWorkflowNodes: import("react").Dispatch>; }; type InstituteProviderContactUploadParams = { user: UserData; addToEvent?: boolean; onComplete?: () => void; }; export type InstituteProviderContactUpload = { business: string; forename?: string; surname?: string; email: string; phone?: string; addressOne?: string; addressTwo?: string; city?: string; postcode?: string; country?: string; }; export declare function useInstituteProviderContactsHandler({ user, addToEvent }: InstituteProviderContactUploadParams): { uploadProviderContacts: (providers: InstituteProviderContactUpload[], schoolId?: string) => Promise; alert: { severity: "warning" | "error" | "success" | "info"; msg: string; } | undefined; onChange: () => void; }; export declare function getIndividualPlacementForTaskList({ type, placement }: { placement: StudentPlacementData; type: "insurance" | "dbsCheck" | "riskAssessment"; }): Promise; export declare function useGetIndividualPlacementForPlacementPage({ user, placementId, organisation }: { user: UserData; placementId: string; organisation?: { details: InstituteData | ProviderData; cohorts: { [key: string]: CohortData; }; }; }): { placement: StudentPlacementData | undefined; wStage: (WorkflowStage & { files: { [fileId: string]: { name: string; url: string; }; }; }) | undefined; student: UserData | undefined; workflow: WorkflowStage[] | undefined; editable: boolean; withdrawFromPlacementPopup: boolean; addOnboardingDocsPopup: boolean; setFeedbackComplete: (e: { instituteName: string; }) => Promise; setAddOnboardingDocsPopup: import("react").Dispatch>; dismissOnboardingPopup: boolean; setDismissOnboardingPopup: import("react").Dispatch>; setWithdrawFromPlacementPopup: import("react").Dispatch>; withdrawFromPlacement: () => Promise; onFlagClick: (e: FlagCodes, onClose?: boolean) => Promise; setUploadInsurance: import("react").Dispatch>; setUploadProviderDocPopup: import("react").Dispatch>; setUploadRA: import("react").Dispatch>; setUploadDBS: import("react").Dispatch>; onboardingStatus: "Add onboarding documents" | "Onboarding sent" | "Onboarding docs completed" | "Onboarding docs approved" | "Complete onboarding"; setSkipStagePopup: import("react").Dispatch>; onboardingPopup: boolean; setViewExternalLinkPopup: import("react").Dispatch>; setOnboardingPopup: import("react").Dispatch>; setRejectELIPopup: import("react").Dispatch>; eliData: string | undefined; riskAssessmentURL: string; dbsCheckURL: string; setExternalLinkCopied: import("react").Dispatch>; skipStagePopup: boolean; snackbar: { open: boolean; message?: string; color?: string; button?: { title: string; onClick: () => any; }; }; setSnackbar: import("react").Dispatch any; }; }>>; cohort: CohortData | undefined; disableEmail: { parent: boolean; provider: boolean; }; rejectELIPopup: boolean; eliPopupOpen: boolean; rejectExternalDocPopup: false | "riskAssessment" | "dbsCheck"; externalDocPopupOpen: false | "riskAssessment" | "dbsCheck"; viewExternalLinkPopup: boolean; externalLinkCopied: boolean; uploadInsurance: boolean; uploadRA: boolean; uploadDBS: boolean; editStage: (nextStageId: number) => Promise; sendEmail: (type: "provider" | "parent", forceSend?: boolean) => undefined; canEdit: boolean; approveELI: () => Promise; setEliPopupOpen: import("react").Dispatch>; uploadProviderDocPopup: "insurance" | "riskAssessment" | "DbsCheck" | undefined; rejectELI: ({ reason }: { reason: string; }) => Promise; setRejectExternalDocPopup: import("react").Dispatch>; setExternalDocPopupOpen: import("react").Dispatch>; approveProviderDoc: (type: "riskAssessment" | "dbsCheck") => Promise; rejectProviderDoc: ({ reason }: { reason: string; }, type: "riskAssessment" | "dbsCheck") => Promise; manuallyConfigureProvider: () => Promise; institute: InstituteData | undefined; shareStudentRequestPopup: boolean; setShareStudentRequestPopup: import("react").Dispatch>; }; export declare function useOnboardingPopup({ onboarding, providerId, placementId, user, onClose }: { onboarding: (OnboardingDocs & { completed: { submitted: boolean; submittedDate?: string; accepted?: boolean; filesViewed?: string[]; formsCompleted?: { [key: string]: unknown; }; filesUploaded?: { [key: number]: string[]; }; }; }); placementId: string; user: UserData; providerId: string; onClose: () => void; }): { addFile: (files: string[]) => void; viewFile: (file: string, onOpen: (url: string) => void) => void; uploadedFiles: { [key: string]: FileItem; }; setFormComplete: (e: { [key: string]: unknown; }, formId?: string) => void; setRejectPopup: import("react").Dispatch>; stagesCompleted: () => boolean; setForm: import("react").Dispatch>; mOnboarding: OnboardingDocs & { completed: { submitted: boolean; submittedDate?: string; accepted?: boolean; filesViewed?: string[]; formsCompleted?: { [key: string]: unknown; }; filesUploaded?: { [key: number]: string[]; }; }; }; form: { [key: string]: unknown; id: string; name: string; } | undefined; submit: () => Promise; acceptOnboarding: () => Promise; rejectOnboarding: ({ reason }: { reason: string; }) => Promise; rejectPopup: boolean; completedSections: { submitted: boolean; submittedDate?: string; filesViewed?: string[] | undefined; formsCompleted?: { [key: string]: unknown; } | undefined; filesUploaded?: { [key: number]: string[]; } | undefined; } | undefined; fileUploadPopup: number | false; setFileUploadPopup: import("react").Dispatch>; viewableFiles: { [key: string]: FileItem; } | undefined; formDetails: { [key: string]: { name: string; id: string; description?: string; product: Products; oId: string; form: CustomFormSchema; }; }; }; export declare function useLoadAddresses(user: UserData, limitItems?: number, queryConstraint?: QueryConstraint[], request?: boolean): { addresses: { [key: string]: import("./typeDefinitions").Address & { name?: string; savedBy?: string[]; product: Products; oId: string; stage: import("./typeDefinitions").OrganisationAddressStages; additionalQuestions?: { bikeStorage?: boolean; kitchen?: boolean; parking?: boolean; disabledAccess?: boolean; }; contacts?: { firstAid?: { name?: string; phone?: string; email?: string; location?: string; }[]; security?: { name?: string; phone?: string; email?: string; location?: string; }[]; reception?: { name?: string; phone?: string; email?: string; location?: string; }[]; }; primaryContactId?: string; default?: boolean; flags?: ("addressMissing" | "noPrimaryContact")[]; color?: string; image?: string | false; } & { listings: number; }; }; onScrollBottom: () => void; loading: boolean; changeQueryConstraints: (e: QueryConstraint[]) => void; }; export declare function useLoadListings(user: UserData, queryConstraint?: QueryConstraint[], request?: boolean): { listings: [string, PlacementListing & { applicants?: number; scheduled?: number; active?: number; }][]; onScrollBottom: () => void; loading: boolean; changeQueryConstraints: (e: QueryConstraint[]) => void; }; export declare function useLoadProviderPlacements(user: UserData, queryConstraint?: QueryConstraint[], placementId?: string): { placements: { [k: string]: never; }; onScrollBottom: () => void; loading: boolean; changeQueryConstraints: (e: QueryConstraint[]) => void; }; export declare function useLoadApplications({ user, applicationType, listingId, queryConstraint }: { user: UserData; applicationType?: "all" | "actionRequired" | "awaitingStudent" | "closed"; listingId?: string; queryConstraint?: QueryConstraint[]; }): { applications: [string, Application][]; type: "all" | "closed" | "actionRequired" | "awaitingStudent"; setType: import("react").Dispatch>; onScrollBottom: () => void; loading: boolean; changeQueryConstraints: (e: QueryConstraint[]) => void; }; export type FilterObject = { [key: string]: { label: string; value?: unknown; values?: { [key: string | number]: string | { label: string; test: QueryFieldFilterConstraint; }; }; type: "dropdown" | "string" | "number"; }; }; export type DataViewerPaginater = { view: "list" | "table"; queryLimit?: number; formatItems?: (key: string, item: any) => Promise<{ key: string; item: any; }> | { key: string; item: any; }; snapshot?: boolean; filters?: FilterObject; onSearch?: boolean | ((search?: string, sort?: [string, { value: string; direction: "asc" | "desc"; }], page?: number, filters?: FilterObject, limit?: number) => Promise<{ [key: string]: any; }>); data?: { [key: string]: { [key: string]: unknown; }; } | QueryObject[]; additionalEntryProcessing?: (k: string, v: any) => Promise<[string, any] | undefined> | [string, any] | undefined; sorts?: Sorts; initialSort?: string; initialSearch?: string; }; export declare function useDataViewerPaginator({ view: initialView, sorts, queryLimit, additionalEntryProcessing, formatItems, snapshot, filters: initialFilters, initialSort, initialSearch, onSearch, data }: DataViewerPaginater): { tableData: { [key: string]: { [key: string]: unknown; }; } | undefined; pageUp: () => void; pageDown: () => void; search: string | undefined; setFilters: (fFilters?: FilterObject) => void; page: number; sorts: Sorts; loading: boolean | "loaded"; sort: [string, { value: string; direction: "asc" | "desc"; }] | undefined; updateSort: (sortLabel?: string) => void; setView: (v: "list" | "table") => void; updateSearch: (search: string) => void; }; export {};