mui-toolpad-extended-tuni
Version:
166 lines (165 loc) • 4.83 kB
TypeScript
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 {};