import { ReviewListItem, ReviewWithPages, ReviewAssignment, CreateReviewRequest, ReviewerInfo, ItemWithSubtree } from "../../types";
import { ItemDescriptor } from "../pageModel";
export declare function useMultiReview({ addSocketMessageListener, socketConnectionVersion, }: {
    addSocketMessageListener: (callback: (message: {
        type: string;
        payload: any;
    }) => void) => void;
    /**
     * Increments on each WebSocket (re)connect. Review updates arrive via
     * "reviews-updated" broadcasts only, so any update sent while this client
     * was still connecting (or between reconnects) would otherwise be lost.
     */
    socketConnectionVersion?: number;
}): {
    reviews: ReviewListItem[];
    selectedReviewId: string | null;
    reviewDetail: {
        review: ReviewWithPages;
        assignments: ReviewAssignment[];
        items: {
            itemId: string;
            language: string;
            includeSubitems: boolean;
            name?: string;
            path?: string;
            decisionsCount?: number;
            commentsCount?: number;
            suggestionsCount?: number;
        }[];
        requiresSecret?: boolean;
        secretValidated?: boolean;
        expired?: boolean;
    } | null;
    loading: boolean;
    error: string | null;
    setSelectedReviewId: import("react").Dispatch<import("react").SetStateAction<string | null>>;
    createNewReview: (request: CreateReviewRequest) => Promise<string | null>;
    addReviewersToReview: (reviewId: string, reviewers: ReviewerInfo[]) => Promise<void>;
    removeReviewerFromReview: (assignmentId: string) => Promise<void>;
    sendReviewInvitations: (assignmentIds: string[]) => Promise<void>;
    makeItemDecision: (assignmentId: string, itemId: string, itemLanguage: string, itemVersion: number | undefined, decision: "Approved" | "Rejected") => Promise<void>;
    setReviewFinalDecision: (reviewId: string, decision: "Approved" | "Rejected") => Promise<void>;
    addPages: (reviewId: string, items: ItemWithSubtree[]) => Promise<void>;
    removePages: (reviewId: string, items: ItemDescriptor[]) => Promise<void>;
    refreshReviews: (options?: {
        silent?: boolean;
    }) => Promise<void>;
    refreshReviewDetail: (() => Promise<void>) | undefined;
};
