UNPKG

mui-toolpad-extended-tuni

Version:
166 lines (165 loc) 4.83 kB
import { Layouts } from 'react-grid-layout'; export interface AuthSettings { allowedAuthMethods: ("local" | "google" | "microsoft" | "shibboleth")[]; minimumPasswordLength: number; requireEmailVerification: boolean; allowSelfRegistration: boolean; defaultUserRole: PlatformRole; } export type PlatformRole = "admin" | "developer" | "moderator" | "creator" | "user" | "guest"; export type visibilityMode = "public" | "enrolled" | "private"; export interface CourseSettings { courseCreation: { requiredRoles: PlatformRole[]; requireApproval: boolean; }; defaultCourseVisibility: visibilityMode; defaultEnrollmentDuration: number; courseCategories: string[]; } export interface AISettings { enabled: boolean; providers: { openai: { enabled: boolean; apiKey?: string; modelName: string; maxTokens: number; temperature: number; }; anthropic: { enabled: boolean; apiKey?: string; modelName: string; }; local: { enabled: boolean; endpoint: string; }; }; features: { autoGrading: boolean; plagiarismDetection: boolean; contentGeneration: boolean; studentAssistant: boolean; teacherAssistant: boolean; }; moderationSettings: { enabled: boolean; filterProfanity: boolean; filterSensitiveContent: boolean; maxQueriesPerHour: number; }; agentConfigurations: { agent: "openai" | "anthropic" | "local" | string; assigned: string[]; apiKey?: string; modelName?: string; apiUrl?: string; }[]; } export interface NotificationSettings { emailNotifications: boolean; pushNotifications: boolean; smtpSettings?: { host: string; port: number; secure: boolean; auth: { user: string; pass: string; }; }; } export interface Platform { name: string; description: string; contactEmail: string; supportUrl: string; darkMode: { enabled: boolean; default: boolean; }; auth: AuthSettings; courses: CourseSettings; ai: AISettings; notifications: NotificationSettings; analytics: { enabled: boolean; provider?: string; trackingId?: string; }; maintenance: { enabled: boolean; message: string; }; storage: { maxFileSize: number; allowedFileTypes: string[]; totalStorageLimit: number; }; features: { forums: boolean; wiki: boolean; chat: boolean; videoConference: boolean; peerReview: boolean; gamification: boolean; }; admins: { emails: string[]; invitePending: string[]; }; privacy: { gdprEnabled: boolean; dataRetentionPeriod: number; defaultPrivacySettings: { allowAnalytics: boolean; allowPersonalization: boolean; allowCommunications: boolean; allowThirdPartySharing: boolean; }; privacyPolicy: { url: string; lastUpdated: string; version: string; }; cookieSettings: { necessary: boolean; functional: boolean; analytics: boolean; advertising: boolean; expiryDays: number; }; dataProcessingAgreements: { thirdParties: { name: string; purpose: string; dataShared: string[]; location: string; }[]; }; }; interface: { layout: Layouts; }; } interface PlatformSettingsStore { platform: Platform; platformToUpdate: Platform | null; updatePlatform: (newPlatform: Platform) => void; updateAISettings: (newAISettings: Partial<AISettings>) => void; resetToDefaults: () => void; } export declare const usePlatformStore: import('zustand/traditional').UseBoundStoreWithEqualityFn<Omit<import('zustand').StoreApi<PlatformSettingsStore>, "persist"> & { persist: { setOptions: (options: Partial<import('zustand/middleware').PersistOptions<PlatformSettingsStore, PlatformSettingsStore>>) => void; clearStorage: () => void; rehydrate: () => Promise<void> | void; hasHydrated: () => boolean; onHydrate: (fn: (state: PlatformSettingsStore) => void) => () => void; onFinishHydration: (fn: (state: PlatformSettingsStore) => void) => () => void; getOptions: () => Partial<import('zustand/middleware').PersistOptions<PlatformSettingsStore, PlatformSettingsStore>>; }; }>; export {};