import { DOMAttributes, ReactNode } from 'react'; import { ChangeData } from '../utils/parse'; import { HunkTokens, TokenNode } from '../tokenize'; import { Side } from '../interface'; export type DefaultRenderToken = (token: TokenNode, index: number) => ReactNode; export type RenderToken = (token: TokenNode, renderDefault: DefaultRenderToken, index: number) => ReactNode; export interface GutterOptions { change: ChangeData; side: Side; inHoverState: boolean; renderDefault: () => ReactNode; wrapInAnchor: (element: ReactNode) => ReactNode; } export type RenderGutter = (options: GutterOptions) => ReactNode; export type ViewType = 'unified' | 'split'; export type GutterType = 'default' | 'none' | 'anchor'; type IsEvent = T extends `on${string}` ? T : never; export type EventKeys = IsEvent>; export type NativeEventMap = Partial<{ [K in EventKeys]: DOMAttributes[K]; }>; type ExtractEventHandler = Exclude; type ExtractEventType = Parameters>[0]; export interface ChangeEventArgs { side?: Side; change: ChangeData | null; } type BindEvent = (args: ChangeEventArgs, event: ExtractEventType) => void; export type EventMap = Partial<{ [K in EventKeys]: BindEvent; }>; export interface ContextProps { hunkClassName: string; lineClassName: string; gutterClassName: string; codeClassName: string; monotonous: boolean; gutterType: GutterType; viewType: ViewType; widgets: Record; hideGutter: boolean; selectedChanges: string[]; tokens?: HunkTokens | null; generateAnchorID: (change: ChangeData) => string | undefined; renderToken?: RenderToken; renderGutter: RenderGutter; gutterEvents: EventMap; codeEvents: EventMap; } export declare const DEFAULT_CONTEXT_VALUE: ContextProps; export declare const Provider: import("react").Provider; export declare const useDiffSettings: () => ContextProps; export {};