export interface KanjiData { character: string; unicode: string; variant?: string; isVariant: boolean; strokes: StrokeData[]; groups: GroupData[]; radicalInfo?: RadicalInfo; strokeCount: number; components?: string[]; } export interface StrokeData { strokeNumber: number; path: string; strokeType: string; numberPosition?: { x: number; y: number; }; groupId?: string; isRadicalStroke?: boolean; } export interface GroupData { id: string; element?: string; radical?: string; position?: string; childStrokes: number[]; children: GroupData[]; } export interface RadicalInfo { radical: string; positions: string[]; strokeRanges: number[][]; } export interface AnimationOptions { strokeDelay: number; /** Animate at constant speed (SVG pixels per second). */ strokeSpeed?: number; /** Delay before animation starts (ms). Defaults to 0. */ animationStartDelay?: number; showNumbers: boolean; loop: boolean; showTrace: boolean; /** If false, displays all strokes immediately without animation. Defaults to true. */ animate?: boolean; strokeStyling: StrokeStyling; radicalStyling?: RadicalStyling; traceStyling?: TraceStyling; numberStyling?: NumberStyling; } export interface StrokeStyling { strokeColour: string | string[]; strokeThickness: number; strokeRadius: number; } export interface RadicalStyling { radicalColour: string | string[]; radicalThickness: number; radicalRadius: number; /** * Which radical types should be colored. If omitted, all radicals are colored. * Accepts values from KanjiVG `kvg:radical` attribute: 'general' | 'nelson' | 'tradit'. */ radicalType?: Array<'general' | 'nelson' | 'tradit'>; } export interface TraceStyling { traceColour: string; traceThickness: number; traceRadius: number; } export interface NumberStyling { fontColour: string; fontWeight: number; fontSize: number; } export interface InfoPanelConfig { showInfo: boolean; style?: React.CSSProperties; location?: 'left' | 'right' | 'top' | 'bottom'; } export interface KanjiCardProps { kanji: string | KanjiData; animationOptions?: Partial; onAnimationComplete?: () => void; className?: string; infoPanel?: InfoPanelConfig; } export declare class KanjiVGError extends Error { code: string; constructor(message: string, code: string); } export declare const ERROR_CODES: { readonly KANJI_NOT_FOUND: "KANJI_NOT_FOUND"; readonly INVALID_UNICODE: "INVALID_UNICODE"; readonly SVG_PARSE_ERROR: "SVG_PARSE_ERROR"; readonly FILE_LOAD_ERROR: "FILE_LOAD_ERROR"; }; //# sourceMappingURL=index.d.ts.map