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 {};
