UNPKG

@datalayer/core

Version:

[![Datalayer](https://assets.datalayer.tech/datalayer-25.svg)](https://datalayer.io)

828 lines 58.6 kB
/** * TanStack Query-based cache hook for Datalayer API * * This is a modernized replacement for useCache.tsx that leverages TanStack Query * for automatic cache management, background refetching, and optimistic updates. * * Key improvements over useCache: * - Automatic cache management (no manual Map objects) * - Built-in loading/error states * - Automatic refetching and deduplication * - Optimistic updates support * - Better TypeScript inference * - React Query DevTools integration * * @example * ```tsx * const { useUser, useUpdateUser } = useCache2(); * * function UserProfile({ userId }: { userId: string }) { * const { data: user, isPending, isError, error } = useUser(userId); * const updateUser = useUpdateUser(); * * if (isPending) return <Spinner />; * if (isError) return <Error message={error.message} />; * * return ( * <div> * <h1>{user.displayName}</h1> * <button onClick={() => updateUser.mutate({ email: 'new@email.com' })}> * Update Email * </button> * </div> * ); * } * ``` */ import { UseQueryOptions, UseMutationOptions } from '@tanstack/react-query'; import { IAnyOrganization, IAnySpace, IAssignment, ICell, IContact, ICourse, IDataset, IDatasource, IDocument, IEnvironment, IExercise, IIAMToken, ILesson, INotebook, IOrganization, IPage, ISchool, ISecret, ITeam, IUser, IUserOnboarding, IUserSettings } from '../models'; type CacheProps = { loginRoute?: string; }; type ISearchOpts = { q: string; types: string[]; max: number; public: boolean; }; /** * Centralized query key factories for all entities * Following TanStack Query best practices for key structure * @see https://tanstack.com/query/latest/docs/framework/react/guides/query-keys */ export declare const queryKeys: { readonly auth: { readonly me: () => readonly ["auth", "me"]; readonly whoami: () => readonly ["auth", "whoami"]; }; readonly users: { readonly all: () => readonly ["users"]; readonly lists: () => readonly ["users", "list"]; readonly list: (filters?: string) => readonly ["users", "list", { readonly filters: string | undefined; }]; readonly details: () => readonly ["users", "detail"]; readonly detail: (id: string) => readonly ["users", "detail", string]; readonly byHandle: (handle: string) => readonly ["users", "handle", string]; readonly search: (pattern: string) => readonly ["users", "search", string]; readonly settings: (userId: string) => readonly ["users", "detail", string, "settings"]; readonly onboarding: (userId: string) => readonly ["users", "detail", string, "onboarding"]; readonly surveys: (userId: string) => readonly ["users", "detail", string, "surveys"]; readonly credits: (userId: string) => readonly ["users", "detail", string, "credits"]; }; readonly organizations: { readonly all: () => readonly ["organizations"]; readonly lists: () => readonly ["organizations", "list"]; readonly details: () => readonly ["organizations", "detail"]; readonly detail: (id: string) => readonly ["organizations", "detail", string]; readonly byHandle: (handle: string) => readonly ["organizations", "handle", string]; readonly userOrgs: () => readonly ["organizations", "user"]; readonly members: (orgId: string) => readonly ["organizations", "detail", string, "members"]; }; readonly teams: { readonly all: () => readonly ["teams"]; readonly details: () => readonly ["teams", "detail"]; readonly detail: (id: string) => readonly ["teams", "detail", string]; readonly byHandle: (handle: string) => readonly ["teams", "handle", string]; readonly byOrganization: (orgId: string) => readonly ["teams", "organization", string]; readonly members: (teamId: string) => readonly ["teams", "detail", string, "members"]; }; readonly spaces: { readonly all: () => readonly ["spaces"]; readonly details: () => readonly ["spaces", "detail"]; readonly detail: (id: string) => readonly ["spaces", "detail", string]; readonly byHandle: (handle: string) => readonly ["spaces", "handle", string]; readonly byOrganization: (orgId: string) => readonly ["spaces", "organization", string]; readonly orgSpaceByHandle: (orgId: string, handle: string) => readonly ["spaces", "organization", string, "handle", string]; readonly byOrganizationAndHandle: (orgHandle: string, spaceHandle: string) => readonly ["spaces", "organization", string, "space", string]; readonly userSpaces: () => readonly ["spaces", "user"]; readonly items: (spaceId: string) => readonly ["spaces", "detail", string, "items"]; readonly members: (spaceId: string) => readonly ["spaces", "detail", string, "members"]; }; readonly notebooks: { readonly all: () => readonly ["notebooks"]; readonly details: () => readonly ["notebooks", "detail"]; readonly detail: (id: string) => readonly ["notebooks", "detail", string]; readonly bySpace: (spaceId: string) => readonly ["notebooks", "space", string]; readonly model: (notebookId: string) => readonly ["notebooks", "detail", string, "model"]; }; readonly documents: { readonly all: () => readonly ["documents"]; readonly details: () => readonly ["documents", "detail"]; readonly detail: (id: string) => readonly ["documents", "detail", string]; readonly bySpace: (spaceId: string) => readonly ["documents", "space", string]; readonly model: (documentId: string) => readonly ["documents", "detail", string, "model"]; }; readonly cells: { readonly all: () => readonly ["cells"]; readonly details: () => readonly ["cells", "detail"]; readonly detail: (id: string) => readonly ["cells", "detail", string]; readonly bySpace: (spaceId: string) => readonly ["cells", "space", string]; }; readonly datasets: { readonly all: () => readonly ["datasets"]; readonly details: () => readonly ["datasets", "detail"]; readonly detail: (id: string) => readonly ["datasets", "detail", string]; readonly bySpace: (spaceId: string) => readonly ["datasets", "space", string]; }; readonly lessons: { readonly all: () => readonly ["lessons"]; readonly details: () => readonly ["lessons", "detail"]; readonly detail: (id: string) => readonly ["lessons", "detail", string]; readonly bySpace: (spaceId: string) => readonly ["lessons", "space", string]; }; readonly exercises: { readonly all: () => readonly ["exercises"]; readonly details: () => readonly ["exercises", "detail"]; readonly detail: (id: string) => readonly ["exercises", "detail", string]; readonly bySpace: (spaceId: string) => readonly ["exercises", "space", string]; }; readonly assignments: { readonly all: () => readonly ["assignments"]; readonly details: () => readonly ["assignments", "detail"]; readonly detail: (id: string) => readonly ["assignments", "detail", string]; readonly bySpace: (spaceId: string) => readonly ["assignments", "space", string]; readonly forStudent: (assignmentId: string, courseId: string, studentId: string) => readonly ["assignments", "detail", string, "course", string, "student", string]; readonly studentVersion: (assignmentId: string) => readonly ["assignments", "detail", string, "studentVersion"]; }; readonly environments: { readonly all: () => readonly ["environments"]; readonly details: () => readonly ["environments", "detail"]; readonly detail: (id: string) => readonly ["environments", "detail", string]; readonly bySpace: (spaceId: string) => readonly ["environments", "space", string]; }; readonly pages: { readonly all: () => readonly ["pages"]; readonly details: () => readonly ["pages", "detail"]; readonly detail: (id: string) => readonly ["pages", "detail", string]; }; readonly datasources: { readonly all: () => readonly ["datasources"]; readonly details: () => readonly ["datasources", "detail"]; readonly detail: (id: string) => readonly ["datasources", "detail", string]; }; readonly secrets: { readonly all: () => readonly ["secrets"]; readonly details: () => readonly ["secrets", "detail"]; readonly detail: (id: string) => readonly ["secrets", "detail", string]; }; readonly tokens: { readonly all: () => readonly ["tokens"]; readonly details: () => readonly ["tokens", "detail"]; readonly detail: (id: string) => readonly ["tokens", "detail", string]; }; readonly contacts: { readonly all: () => readonly ["contacts"]; readonly lists: () => readonly ["contacts", "list"]; readonly details: () => readonly ["contacts", "detail"]; readonly detail: (id: string) => readonly ["contacts", "detail", string]; readonly byHandle: (handle: string) => readonly ["contacts", "handle", string]; readonly search: (query: string) => readonly ["contacts", "search", string]; }; readonly invites: { readonly all: () => readonly ["invites"]; readonly byToken: (token: string) => readonly ["invites", "token", string]; readonly byAccount: (accountId: string) => readonly ["invites", "account", string]; }; readonly courses: { readonly all: () => readonly ["courses"]; readonly details: () => readonly ["courses", "detail"]; readonly detail: (id: string) => readonly ["courses", "detail", string]; readonly public: () => readonly ["courses", "public"]; readonly instructor: (instructorId: string) => readonly ["courses", "instructor", string]; readonly enrollments: () => readonly ["courses", "enrollments", "me"]; readonly students: (courseId: string) => readonly ["courses", "detail", string, "students"]; readonly student: (courseId: string, studentId: string) => readonly ["courses", "detail", string, "student", string]; }; readonly schools: { readonly all: () => readonly ["schools"]; }; readonly inbounds: { readonly all: () => readonly ["inbounds"]; readonly detail: (id: string) => readonly ["inbounds", string]; readonly byHandle: (handle: string) => readonly ["inbounds", "handle", string]; }; readonly outbounds: { readonly all: () => readonly ["outbounds"]; readonly detail: (id: string) => readonly ["outbounds", string]; }; readonly items: { readonly all: () => readonly ["items"]; readonly public: () => readonly ["items", "public"]; readonly bySpace: (spaceId: string) => readonly ["items", "space", string]; readonly search: (opts: ISearchOpts) => readonly ["items", "search", ISearchOpts]; }; readonly layout: { readonly byAccount: (accountHandle: string, spaceHandle?: string) => readonly ["layout", string, string] | readonly ["layout", string]; }; readonly usages: { readonly user: () => readonly ["usages", "user"]; readonly userById: (userId: string) => readonly ["usages", "user", string]; readonly platform: () => readonly ["usages", "platform"]; }; readonly prices: { readonly stripe: () => readonly ["prices", "stripe"]; }; readonly growth: { readonly kpi: () => readonly ["growth", "kpi"]; }; readonly oauth2: { readonly authorizationUrl: (queryArgs: Record<string, string>) => readonly ["oauth2", "authz", "url", Record<string, string>]; readonly authorizationLinkUrl: (queryArgs: Record<string, string>) => readonly ["oauth2", "authz", "url", "link", Record<string, string>]; }; }; /** * TanStack Query-based cache hook for Datalayer API * * This hook provides React Query-based data fetching and mutations for all * Datalayer entities. Unlike the original useCache hook, this returns hook * factories that components can use directly. * * @param options - Configuration options * @param options.loginRoute - Route to redirect to on authentication failure (default: '/login') * * @returns Object containing all query and mutation hook factories */ export declare const useCache: ({ loginRoute }?: CacheProps) => { useLogin: () => import("@tanstack/react-query").UseMutationResult<any, Error, { handle: string; password: string; }, unknown>; useLogout: () => import("@tanstack/react-query").UseMutationResult<any, Error, void, unknown>; useMe: (token?: string) => import("@tanstack/react-query").UseQueryResult<IUser | null | undefined, Error>; useUpdateMe: () => import("@tanstack/react-query").UseMutationResult<any, Error, { email: string; firstName: string; lastName: string; }, unknown>; useWhoami: () => import("@tanstack/react-query").UseQueryResult<any, Error>; useChangePassword: () => import("@tanstack/react-query").UseMutationResult<any, Error, { handle: string; password: string; passwordConfirm: string; }, unknown>; useRequestEmailUpdate: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useConfirmEmailUpdate: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useRequestJoin: () => import("@tanstack/react-query").UseMutationResult<any, Error, { handle: string; email: string; firstName: string; lastName: string; password: string; passwordConfirm: string; }, unknown>; useRequestJoinToken: () => import("@tanstack/react-query").UseMutationResult<any, Error, { handle: string; email: string; firstName: string; lastName: string; password: string; passwordConfirm: string; }, unknown>; useJoinWithInvite: () => import("@tanstack/react-query").UseMutationResult<any, Error, { formValues: any; token: string; }, unknown>; useConfirmJoinWithToken: () => import("@tanstack/react-query").UseMutationResult<any, Error, { userHandle: string; token: string; }, unknown>; useCreateTokenForPasswordChange: () => import("@tanstack/react-query").UseMutationResult<any, Error, { handle: string; password: string; passwordConfirm: string; }, unknown>; useConfirmPasswordWithToken: () => import("@tanstack/react-query").UseMutationResult<any, Error, { userHandle: string; token: string; }, unknown>; useOAuth2AuthorizationURL: () => import("@tanstack/react-query").UseMutationResult<string, Error, Record<string, string>, unknown>; useOAuth2AuthorizationLinkURL: () => import("@tanstack/react-query").UseMutationResult<string, Error, Record<string, string>, unknown>; useGetGitHubProfile: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useGetLinkedinProfile: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; usePostLinkedinShare: () => import("@tanstack/react-query").UseMutationResult<any, Error, { linkedinUserUrn: string; postText: string; accessToken: string; }, unknown>; usePostLinkedinShareWithUpload: () => import("@tanstack/react-query").UseMutationResult<any, Error, { linkedinUserUrn: string; postText: string; uploadObject: string; accessToken: string; }, unknown>; useRegisterToWaitingList: () => import("@tanstack/react-query").UseMutationResult<any, Error, { firstName: string; lastName: string; email: string; affiliation?: string; }, unknown>; useProxyGET: () => import("@tanstack/react-query").UseMutationResult<any, Error, { url: string; token: string; }, unknown>; useProxyPOST: () => import("@tanstack/react-query").UseMutationResult<any, Error, { url: string; body: object; token: string; }, unknown>; useProxyPUT: () => import("@tanstack/react-query").UseMutationResult<any, Error, { url: string; body: object; token: string; }, unknown>; useUser: (userId: string) => import("@tanstack/react-query").UseQueryResult<IUser | undefined, Error>; useUserByHandle: (handle: string) => import("@tanstack/react-query").UseQueryResult<any, Error>; useSearchUsers: (namingPattern: string) => import("@tanstack/react-query").UseQueryResult<IUser[], Error>; useUpdateUserOnboarding: () => import("@tanstack/react-query").UseMutationResult<any, Error, IUserOnboarding, unknown>; useUpdateUserSettings: () => import("@tanstack/react-query").UseMutationResult<any, Error, { userId: string; settings: IUserSettings; }, unknown>; useRefreshUser: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useUserCredits: (userId: string) => import("@tanstack/react-query").UseQueryResult<any, Error>; useUpdateUserCredits: () => import("@tanstack/react-query").UseMutationResult<any, Error, { userId: string; credits: number; brand?: string; }, unknown>; useAssignRoleToUser: () => import("@tanstack/react-query").UseMutationResult<any, Error, { userId: string; roleName: string; }, unknown>; useUnassignRoleFromUser: () => import("@tanstack/react-query").UseMutationResult<any, Error, { userId: string; roleName: string; }, unknown>; useUpdateUserCreditsQuota: () => import("@tanstack/react-query").UseMutationResult<any, Error, { userId: string; quota?: number; }, unknown>; useUsages: (options?: Omit<UseQueryOptions<unknown[]>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<unknown[], Error>; useUsagesForUser: (userId: string, options?: Omit<UseQueryOptions<unknown[]>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<unknown[], Error>; usePlatformUsages: (options?: Omit<UseQueryOptions<unknown[]>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<unknown[], Error>; useOrganization: (organizationId: string) => import("@tanstack/react-query").UseQueryResult<IOrganization, Error>; useOrganizationByHandle: (handle: string) => import("@tanstack/react-query").UseQueryResult<IOrganization | null, Error>; useUserOrganizations: () => import("@tanstack/react-query").UseQueryResult<any, Error>; useCreateOrganization: () => import("@tanstack/react-query").UseMutationResult<any, Error, Partial<IOrganization>, unknown>; useUpdateOrganization: () => import("@tanstack/react-query").UseMutationResult<any, Error, Partial<IAnyOrganization>, unknown>; useAddMemberToOrganization: () => import("@tanstack/react-query").UseMutationResult<any, Error, { organizationId: string; userId: string; }, unknown>; useRemoveMemberFromOrganization: () => import("@tanstack/react-query").UseMutationResult<any, Error, { organizationId: string; userId: string; }, unknown>; useAddRoleToOrganizationMember: () => import("@tanstack/react-query").UseMutationResult<any, Error, { organizationId: string; userId: string; roleName: string; }, unknown>; useRemoveRoleFromOrganizationMember: () => import("@tanstack/react-query").UseMutationResult<any, Error, { organizationId: string; userId: string; roleName: string; }, unknown>; useRefreshOrganization: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useRefreshUserOrganizations: () => import("@tanstack/react-query").UseMutationResult<any, Error, void, unknown>; useUserOrganizationById: (organizationId: string) => any; useClearCachedOrganizations: (options?: UseMutationOptions<void, Error, void>) => import("@tanstack/react-query").UseMutationResult<void, Error, void, unknown>; useTeam: (teamId: string, organizationId: string) => import("@tanstack/react-query").UseQueryResult<ITeam, Error>; useTeamByHandle: (handle: string) => import("@tanstack/react-query").UseQueryResult<ITeam | null, Error>; useTeamsByOrganization: (organizationId: string) => import("@tanstack/react-query").UseQueryResult<any, Error>; useCreateTeam: () => import("@tanstack/react-query").UseMutationResult<any, Error, { team: Partial<ITeam>; organization: IAnyOrganization; }, unknown>; useUpdateTeam: () => import("@tanstack/react-query").UseMutationResult<any, Error, Partial<ITeam>, unknown>; useAddMemberToTeam: () => import("@tanstack/react-query").UseMutationResult<any, Error, { teamId: string; userId: string; }, unknown>; useRemoveMemberFromTeam: () => import("@tanstack/react-query").UseMutationResult<any, Error, { teamId: string; userId: string; }, unknown>; useAddRoleToTeamMember: () => import("@tanstack/react-query").UseMutationResult<any, Error, { teamId: string; userId: string; roleName: string; }, unknown>; useRemoveRoleFromTeamMember: () => import("@tanstack/react-query").UseMutationResult<any, Error, { teamId: string; userId: string; roleName: string; }, unknown>; useRefreshTeam: () => import("@tanstack/react-query").UseMutationResult<any, Error, { teamId: string; organizationId: string; }, unknown>; useRefreshTeams: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useClearCachedTeams: (options?: UseMutationOptions<void, Error, void>) => import("@tanstack/react-query").UseMutationResult<void, Error, void, unknown>; useSchools: () => import("@tanstack/react-query").UseQueryResult<ISchool[], Error>; useRefreshSchools: (options?: UseMutationOptions<unknown, Error, void>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, void, unknown>; useSpace: (spaceId: string) => import("@tanstack/react-query").UseQueryResult<IAnySpace, Error>; useOrganizationSpace: (organizationId: string, spaceId: string) => import("@tanstack/react-query").UseQueryResult<IAnySpace, Error>; useOrganizationSpaceByHandle: (organizationId: string, handle: string) => import("@tanstack/react-query").UseQueryResult<IAnySpace | null, Error>; useOrganizationSpaces: (organizationId: string) => import("@tanstack/react-query").UseQueryResult<any, Error>; useUserSpace: (spaceId: string) => import("@tanstack/react-query").UseQueryResult<IAnySpace | null, Error>; useUserSpaceByHandle: (handle: string) => import("@tanstack/react-query").UseQueryResult<{} | null, Error>; useUserSpaces: () => import("@tanstack/react-query").UseQueryResult<any, Error>; useCreateSpace: () => import("@tanstack/react-query").UseMutationResult<any, Error, { space: Partial<IAnySpace>; organization?: IAnyOrganization; }, unknown>; useUpdateSpace: () => import("@tanstack/react-query").UseMutationResult<any, Error, Partial<IAnySpace>, unknown>; useUpdateOrganizationSpace: () => import("@tanstack/react-query").UseMutationResult<any, Error, { organizationId: string; spaceId: string; updates: Partial<IAnySpace>; }, unknown>; useAddMemberToOrganizationSpace: () => import("@tanstack/react-query").UseMutationResult<any, Error, { organizationId: string; spaceId: string; accountId: string; }, unknown>; useRemoveMemberFromOrganizationSpace: () => import("@tanstack/react-query").UseMutationResult<any, Error, { organizationId: string; spaceId: string; accountId: string; }, unknown>; useMakeSpacePublic: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useMakeSpacePrivate: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useRefreshOrganizationSpace: () => import("@tanstack/react-query").UseMutationResult<any, Error, { organizationId: string; spaceId: string; }, unknown>; useRefreshOrganizationSpaces: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useRefreshUserSpaces: () => import("@tanstack/react-query").UseMutationResult<any, Error, void, unknown>; useRefreshUserSpace: (options?: UseMutationOptions<unknown, Error, { userId: string; spaceId: string; }>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, { userId: string; spaceId: string; }, unknown>; useRefreshLayout: () => import("@tanstack/react-query").UseMutationResult<any, Error, { accountHandle: string; spaceHandle?: string; }, unknown>; useExportSpace: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useCourse: (courseId: string) => import("@tanstack/react-query").UseQueryResult<ICourse | undefined, Error>; useUpdateCourse: () => import("@tanstack/react-query").UseMutationResult<any, Error, { courseId: string; name: string; description: string; }, unknown>; usePublicCourses: () => import("@tanstack/react-query").UseQueryResult<any, Error>; useInstructorCourses: (userId?: string) => import("@tanstack/react-query").UseQueryResult<any, Error>; useCourseEnrollments: () => import("@tanstack/react-query").UseQueryResult<any, Error>; useEnrollStudentToCourse: () => import("@tanstack/react-query").UseMutationResult<any, Error, { courseId: string; studentId: string; }, unknown>; useRemoveStudentFromCourse: () => import("@tanstack/react-query").UseMutationResult<any, Error, { courseId: string; studentId: string; }, unknown>; useStudent: (courseId: string, studentId: string, options?: Omit<UseQueryOptions<unknown>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<unknown, Error>; useConfirmCourseItemCompletion: () => import("@tanstack/react-query").UseMutationResult<any, Error, { courseId: string; itemType: string; itemId: string; completed: boolean; }, unknown>; useSetCourseItems: () => import("@tanstack/react-query").UseMutationResult<any, Error, { courseId: string; itemIds: string[]; }, unknown>; useRefreshCourse: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useRefreshPublicCourses: (options?: UseMutationOptions<unknown, Error, void>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, void, unknown>; useRefreshInstructorCourses: (options?: UseMutationOptions<unknown, Error, void>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, void, unknown>; useRefreshCoursesEnrollments: (options?: UseMutationOptions<unknown, Error, void>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, void, unknown>; useRefreshStudent: (options?: UseMutationOptions<unknown, Error, { courseId: string; studentHandle: string; }>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, { courseId: string; studentHandle: string; }, unknown>; useNotebook: (notebookId: string) => import("@tanstack/react-query").UseQueryResult<INotebook, Error>; useNotebooksBySpace: (spaceId: string) => import("@tanstack/react-query").UseQueryResult<any, Error>; useCreateNotebook: () => import("@tanstack/react-query").UseMutationResult<any, Error, { spaceId: string; name: string; description?: string; notebookType?: string; file?: File; }, unknown>; useUpdateNotebook: () => import("@tanstack/react-query").UseMutationResult<any, Error, { id: string; name: string; description: string; }, unknown>; useUpdateNotebookModel: () => import("@tanstack/react-query").UseMutationResult<any, Error, { notebookId: string; nbformat: unknown; }, unknown>; useCloneNotebook: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useRefreshNotebook: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useRefreshSpaceNotebooks: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useDocument: (documentId: string) => import("@tanstack/react-query").UseQueryResult<IDocument, Error>; useDocumentsBySpace: (spaceId: string) => import("@tanstack/react-query").UseQueryResult<any, Error>; useCreateDocument: () => import("@tanstack/react-query").UseMutationResult<any, Error, { spaceId: string; name: string; description?: string; documentType?: string; file?: File; }, unknown>; useUpdateDocument: () => import("@tanstack/react-query").UseMutationResult<any, Error, { id: string; name: string; description: string; }, unknown>; useUpdateDocumentModel: () => import("@tanstack/react-query").UseMutationResult<any, Error, { id: string; model: unknown; }, unknown>; useCloneDocument: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useRefreshDocument: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useRefreshSpaceDocuments: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useCell: (cellId: string) => import("@tanstack/react-query").UseQueryResult<ICell | undefined, Error>; useCellsBySpace: (spaceId: string) => import("@tanstack/react-query").UseQueryResult<any, Error>; useUpdateCell: () => import("@tanstack/react-query").UseMutationResult<any, Error, { id: string; name: string; description: string; source: string; outputshotUrl?: string; outputshotData?: string; spaceId: string; }, unknown>; useCloneCell: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useRefreshCell: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useRefreshSpaceCells: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useDataset: (datasetId: string) => import("@tanstack/react-query").UseQueryResult<IDataset | undefined, Error>; useDatasetsBySpace: (spaceId: string) => import("@tanstack/react-query").UseQueryResult<any, Error>; useUpdateDataset: () => import("@tanstack/react-query").UseMutationResult<any, Error, { id: string; name: string; description: string; spaceId?: string; }, unknown>; useRefreshDataset: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useRefreshSpaceDatasets: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useEnvironment: (environmentId: string) => import("@tanstack/react-query").UseQueryResult<IEnvironment | undefined, Error>; useEnvironmentsBySpace: (spaceId: string) => import("@tanstack/react-query").UseQueryResult<any, Error>; useRefreshEnvironment: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useRefreshSpaceEnvironments: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useLesson: (lessonId: string) => import("@tanstack/react-query").UseQueryResult<ILesson | undefined, Error>; useLessonsBySpace: (spaceId: string) => import("@tanstack/react-query").UseQueryResult<any, Error>; useCloneLesson: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useRefreshLesson: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useRefreshSpaceLessons: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useExercise: (exerciseId: string) => import("@tanstack/react-query").UseQueryResult<IExercise | undefined, Error>; useExercisesBySpace: (spaceId: string) => import("@tanstack/react-query").UseQueryResult<any, Error>; useUpdateExercise: () => import("@tanstack/react-query").UseMutationResult<any, Error, { id: string; name: string; description: string; help?: string; codePre?: string; codeSolution?: string; codeQuestion?: string; codeTest?: string; }, unknown>; useCloneExercise: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useUpdateExercisePoints: () => import("@tanstack/react-query").UseMutationResult<any, Error, { exerciseId: string; codeStudent: string; points: number; }, unknown>; useRefreshExercise: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useRefreshSpaceExercises: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useAssignment: (assignmentId: string) => import("@tanstack/react-query").UseQueryResult<IAssignment | undefined, Error>; useAssignmentsBySpace: (spaceId: string) => import("@tanstack/react-query").UseQueryResult<any, Error>; useCloneAssignment: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useAssignmentForStudent: (assignmentId: string, courseId: string, userId: string, options?: Omit<UseQueryOptions<unknown>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<unknown, Error>; useAssignmentStudentVersion: (assignmentId: string, options?: Omit<UseQueryOptions<unknown>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<unknown, Error>; useGradeAssignmentForStudent: () => import("@tanstack/react-query").UseMutationResult<any, Error, { assignmentId: string; courseId: string; userId: string; model: unknown; }, unknown>; useResetAssignmentForStudent: () => import("@tanstack/react-query").UseMutationResult<any, Error, { assignmentId: string; courseId: string; userId: string; }, unknown>; useRefreshAssignment: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useRefreshAssignmentForStudent: (options?: UseMutationOptions<unknown, Error, { courseId: string; userId: string; assignmentId: string; }>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, { courseId: string; userId: string; assignmentId: string; }, unknown>; useRefreshSpaceAssignments: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useDeleteItem: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useSpaceItems: (spaceId: string) => import("@tanstack/react-query").UseQueryResult<any[], Error>; useMakeItemPublic: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useMakeItemPrivate: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useSearchPublicItems: () => import("@tanstack/react-query").UseMutationResult<any, Error, { q?: string; types?: string[]; max?: number; }, unknown>; usePublicItems: (options?: UseQueryOptions<unknown, Error>) => import("@tanstack/react-query").UseQueryResult<unknown, Error>; useRefreshPublicItems: (options?: UseMutationOptions<unknown, Error, void>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, void, unknown>; useRefreshSpaceItems: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useClearCachedPublicItems: (options?: UseMutationOptions<void, Error, void>) => import("@tanstack/react-query").UseMutationResult<void, Error, void, unknown>; useClearCachedItems: (options?: UseMutationOptions<void, Error, void>) => import("@tanstack/react-query").UseMutationResult<void, Error, void, unknown>; usePage: (pageId: string) => import("@tanstack/react-query").UseQueryResult<IPage | undefined, Error>; usePages: () => import("@tanstack/react-query").UseQueryResult<any, Error>; useCreatePage: () => import("@tanstack/react-query").UseMutationResult<any, Error, Omit<IPage, "id">, unknown>; useUpdatePage: () => import("@tanstack/react-query").UseMutationResult<any, Error, Pick<IPage, "id" | "name" | "tags" | "description">, unknown>; useDeletePage: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useDatasource: (datasourceId: string) => import("@tanstack/react-query").UseQueryResult<IDatasource | null | undefined, Error>; useDatasources: () => import("@tanstack/react-query").UseQueryResult<any, Error>; useCreateDatasource: () => import("@tanstack/react-query").UseMutationResult<any, Error, Omit<IDatasource, "id">, unknown>; useUpdateDatasource: () => import("@tanstack/react-query").UseMutationResult<any, Error, IDatasource, unknown>; useSecret: (secretId: string, options?: { enabled?: boolean; refetchOnMount?: boolean; }) => import("@tanstack/react-query").UseQueryResult<ISecret | null | undefined, Error>; useSecrets: () => import("@tanstack/react-query").UseQueryResult<any, Error>; useCreateSecret: () => import("@tanstack/react-query").UseMutationResult<any, Error, Omit<ISecret, "id">, unknown>; useUpdateSecret: () => import("@tanstack/react-query").UseMutationResult<any, Error, ISecret, unknown>; useDeleteSecret: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useToken: (tokenId: string) => import("@tanstack/react-query").UseQueryResult<IIAMToken | null | undefined, Error>; useTokens: () => import("@tanstack/react-query").UseQueryResult<any, Error>; useCreateToken: () => import("@tanstack/react-query").UseMutationResult<any, Error, Omit<IIAMToken, "id" | "value">, unknown>; useUpdateToken: () => import("@tanstack/react-query").UseMutationResult<any, Error, IIAMToken, unknown>; useInvite: (token: string) => import("@tanstack/react-query").UseQueryResult<import("../models").IInvite | undefined, Error>; useInvitesByUser: (accountId: string) => import("@tanstack/react-query").UseQueryResult<any, Error>; usePutInvite: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useRequestInvite: (options?: UseMutationOptions<unknown, Error, { firstName: string; lastName: string; email: string; socialUrl: string; }>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, { firstName: string; lastName: string; email: string; socialUrl: string; }, unknown>; useSendInvite: (options?: UseMutationOptions<unknown, Error, { email: string; firstName: string; lastName: string; message: string; brand: string; }>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, { email: string; firstName: string; lastName: string; message: string; brand: string; }, unknown>; useRefreshInvite: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useRefreshInvites: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useClearCachedInvites: (options?: UseMutationOptions<void, Error, void>) => import("@tanstack/react-query").UseMutationResult<void, Error, void, unknown>; useContact: (contactId: string, options?: { enabled?: boolean; }) => import("@tanstack/react-query").UseQueryResult<IContact | undefined, Error>; useContactByHandle: (handle: string) => import("@tanstack/react-query").UseQueryResult<IContact | null | undefined, Error>; useSearchContacts: (query: string) => import("@tanstack/react-query").UseQueryResult<any, Error>; useCreateContact: () => import("@tanstack/react-query").UseMutationResult<any, Error, IContact, unknown>; useUpdateContact: () => import("@tanstack/react-query").UseMutationResult<any, Error, { contactId: string; contact: IContact; }, unknown>; useDeleteContact: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useAssignTagToContact: () => import("@tanstack/react-query").UseMutationResult<any, Error, { contactId: string; tagName: string; }, unknown>; useUnassignTagFromContact: () => import("@tanstack/react-query").UseMutationResult<any, Error, { contactId: string; tagName: string; }, unknown>; useSendInviteToContact: () => import("@tanstack/react-query").UseMutationResult<any, Error, { contactId: string; message: string; }, unknown>; useEnrichContactEmail: () => import("@tanstack/react-query").UseMutationResult<any, Error, { contactId: string; useDomain: boolean; }, unknown>; useEnrichContactLinkedin: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useSendLinkedinConnectionRequest: () => import("@tanstack/react-query").UseMutationResult<any, Error, { contactId: string; message: string; }, unknown>; useLinkUserWithContact: () => import("@tanstack/react-query").UseMutationResult<any, Error, { userId: string; contactId: string; }, unknown>; useUnlinkUserFromContact: () => import("@tanstack/react-query").UseMutationResult<any, Error, { userId: string; contactId: string; }, unknown>; useRefreshContact: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useInbounds: (options?: Omit<UseQueryOptions<unknown[]>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<unknown[], Error>; useInbound: (id: string, options?: UseQueryOptions<unknown, Error>) => import("@tanstack/react-query").UseQueryResult<unknown, Error>; useInboundByHandle: (handle: string, options?: UseQueryOptions<unknown, Error>) => import("@tanstack/react-query").UseQueryResult<unknown, Error>; useRefreshInbound: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useOutbound: (outboundId: string, options?: Omit<UseQueryOptions<unknown>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<unknown, Error>; useOutbounds: (options?: Omit<UseQueryOptions<unknown[]>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<unknown[], Error>; useDraftBulkEmailsOutbounds: () => import("@tanstack/react-query").UseMutationResult<any, Error, unknown, unknown>; useTryBulkEmailsOutbounds: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useLaunchBulkEmailsOutbounds: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useSendOutboundEmailToUser: () => import("@tanstack/react-query").UseMutationResult<any, Error, { userId: string; recipient: string; subject: string; content: string; }, unknown>; useDeleteOutbound: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useSubscribeUserToOutbounds: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useUnsubscribeUserFromOutbounds: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useUnsubscribeContactFromOutbounds: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useUnsubscribeInviteeFromOutbounds: () => import("@tanstack/react-query").UseMutationResult<any, Error, string, unknown>; useRefreshOutbound: (options?: UseMutationOptions<unknown, Error, string>) => import("@tanstack/react-query").UseMutationResult<unknown, Error, string, unknown>; useEnableUserMFA: () => import("@tanstack/react-query").UseMutationResult<any, Error, void, unknown>; useDisableUserMFA: () => import("@tanstack/react-query").UseMutationResult<any, Error, void, unknown>; useValidateUserMFACode: () => import("@tanstack/react-query").UseMutationResult<any, Error, { userUid: string; code: string; }, unknown>; useCreateCheckoutSession: () => import("@tanstack/react-query").UseMutationResult<any, Error, { product: any; location: Location; }, unknown>; useBurnCredit: () => import("@tanstack/react-query").UseMutationResult<any, Error, number, unknown>; useStripePrices: (options?: Omit<UseQueryOptions<unknown[]>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<unknown[], Error>; useRequestPlatformSupport: () => import("@tanstack/react-query").UseMutationResult<any, Error, { subject: string; message: string; email: string; brand: string; }, unknown>; useRequestPlatformSupport2: () => import("@tanstack/react-query").UseMutationResult<any, Error, { accountHandle: string; firstName: string; lastName: string; email: string; message: string; }, unknown>; useUserSurveys: (userId: string, options?: Omit<UseQueryOptions<unknown>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<unknown, Error>; useGrowthKPI: (options?: Omit<UseQueryOptions<unknown>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<unknown, Error>; queryKeys: { readonly auth: { readonly me: () => readonly ["auth", "me"]; readonly whoami: () => readonly ["auth", "whoami"]; }; readonly users: { readonly all: () => readonly ["users"]; readonly lists: () => readonly ["users", "list"]; readonly list: (filters?: string) => readonly ["users", "list", { readonly filters: string | undefined; }]; readonly details: () => readonly ["users", "detail"]; readonly detail: (id: string) => readonly ["users", "detail", string]; readonly byHandle: (handle: string) => readonly ["users", "handle", string]; readonly search: (pattern: string) => readonly ["users", "search", string]; readonly settings: (userId: string) => readonly ["users", "detail", string, "settings"]; readonly onboarding: (userId: string) => readonly ["users", "detail", string, "onboarding"]; readonly surveys: (userId: string) => readonly ["users", "detail", string, "surveys"]; readonly credits: (userId: string) => readonly ["users", "detail", string, "credits"]; }; readonly organizations: { readonly all: () => readonly ["organizations"]; readonly lists: () => readonly ["organizations", "list"]; readonly details: () => readonly ["organizations", "detail"]; readonly detail: (id: string) => readonly ["organizations", "detail", string]; readonly byHandle: (handle: string) => readonly ["organizations", "handle", string]; readonly userOrgs: () => readonly ["organizations", "user"]; readonly members: (orgId: string) => readonly ["organizations", "detail", string, "members"]; }; readonly teams: { readonly all: () => readonly ["teams"]; readonly details: () => readonly ["teams", "detail"]; readonly detail: (id: string) => readonly ["teams", "detail", string]; readonly byHandle: (handle: string) => readonly ["teams", "handle", string]; readonly byOrganization: (orgId: string) => readonly ["teams", "organization", string]; readonly members: (teamId: string) => readonly ["teams", "detail", string, "members"]; }; readonly spaces: { readonly all: () => readonly ["spaces"]; readonly details: () => readonly ["spaces", "detail"]; readonly detail: (id: string) => readonly ["spaces", "detail", string]; readonly byHandle: (handle: string) => readonly