import type { ForumApiClient, ForumTopic, ForumReply, ForumPagination } from '../types/forum';
type UseForumState = {
    topics: ForumTopic[];
    pagination: ForumPagination | null;
    selectedTopic: ForumTopic | null;
    replies: ForumReply[];
    isLoadingTopics: boolean;
    isLoadingTopic: boolean;
    isSubmitting: boolean;
    error: string | null;
};
export type UseForumReturn = UseForumState & {
    fetchTopics: (params?: {
        limit?: number;
        offset?: number;
    }) => Promise<void>;
    fetchTopic: (topicId: string) => Promise<void>;
    createTopic: (body: {
        content: string;
        imageUrl?: string;
        countsForGrade?: boolean;
    }) => Promise<void>;
    updateTopic: (topicId: string, body: {
        content?: string;
        imageUrl?: string | null;
    }) => Promise<void>;
    deleteTopic: (topicId: string) => Promise<void>;
    createReply: (topicId: string, body: {
        content: string;
        imageUrl?: string;
    }) => Promise<void>;
    updateReply: (replyId: string, body: {
        content?: string;
        imageUrl?: string | null;
    }) => Promise<void>;
    deleteReply: (replyId: string) => Promise<void>;
    selectTopic: (topic: ForumTopic | null) => void;
    clearError: () => void;
};
export declare const createUseForum: (apiClient: ForumApiClient) => () => UseForumReturn;
export {};
//# sourceMappingURL=useForum.d.ts.map