import React__default from 'react';
import { CurriculumSectionTitleContents } from '../../types/curriculumContents.type.js';
import { Curriculum, CurriculumListContents } from '../../types/curriculum.type.js';

interface CurriculumContextValue {
    curriculum: Curriculum;
    selectedIndex: number;
    setSelectedIndex: (idx: number) => void;
    selectedId: string;
    hasPrev: boolean;
    hasNext: boolean;
    selectPrev: (cb?: (moveIndex: number) => void) => void;
    selectNext: (cb?: (moveIndex: number) => void) => void;
    selectedItem: CurriculumListContents;
    /** 선택된 아이템의 이전 아이템 중 가장 가까운 섹션 타이틀 */
    selectedSectionTitle: CurriculumSectionTitleContents | null;
    /** 컨텐츠 목록 스크롤 이동 함수 */
    scrollNavItem: (uuid: string) => void;
    /** 스크롤 영역 참조 */
    scrollAreaRef: React__default.RefObject<HTMLDivElement | null>;
    /** 리뷰 제출 함수 */
    onReviewSubmit: ({ reviewId, answer, }: {
        reviewId: string;
        answer: Record<string, string>;
    }) => Promise<boolean>;
    /** 리뷰 응답 값 변경 시 호출 */
    onReviewValueChange: ({ reviewId, answer, }: {
        reviewId: string;
        answer: Record<string, string>;
    }) => void;
    /** 과제 완료 후 저장된 값 */
    curriculumReviewAnswers: Record<string, string>;
    /** 과제 완료 전 임시 저장된 값 */
    tempCurriculumReviewAnswers: Record<string, string>;
    /** 항목 수강 완료 여부 */
    curriculumCompleteMap: Record<string, boolean>;
    /** action Button 클릭시 호출 */
    onActionButtonClick: (item: CurriculumListContents) => void;
    /** 초기 선택 인덱스 */
    initialSelectedIndex?: number;
}
interface CurriculumProviderProps extends Pick<CurriculumContextValue, 'curriculum' | 'onReviewSubmit' | 'onReviewValueChange' | 'curriculumReviewAnswers' | 'tempCurriculumReviewAnswers' | 'curriculumCompleteMap' | 'onActionButtonClick' | 'initialSelectedIndex'> {
    children: React__default.ReactNode;
    onReviewValueChange: ({ reviewId, answer, }: {
        reviewId: string;
        answer: Record<string, string>;
    }) => void;
    /** 현재 화면에 표시 중인 컨텐츠 인덱스 변경 시 호출 */
    onChangeSelectedContent?: (item: CurriculumListContents) => void;
}
declare function CurriculumProvider(props: CurriculumProviderProps): React__default.ReactElement;
declare function useCurriculumContext(): CurriculumContextValue;

export { type CurriculumContextValue, CurriculumProvider, type CurriculumProviderProps, useCurriculumContext };
