import type { Dispatch, SetStateAction } from 'react'; import { createContext, useContext } from 'react'; import type { QrCodeGeneratorState, QrCodeMode, QrCodeParserState } from '../types'; export interface QrCodeContextValue { mode: QrCodeMode; setMode: (mode: QrCodeMode) => void; generatorState: QrCodeGeneratorState; setTextToEncode: (text: string) => void; downloadQrCode: () => void; copyQrCode: () => Promise; parserState: QrCodeParserState; setParserState: Dispatch>; parseQrCode: (file: File) => Promise; handleFileChange: (file: File) => void; handleClearFile: () => void; } export const QrCodeContext = createContext(null); export function useQrCodeContext() { const context = useContext(QrCodeContext); if (!context) { throw new Error('useQrCodeContext must be used within a valid QrCodeProvider container'); } return context; }