import { OperationHint } from "./hint-models";
/**
 * Settings for a custom button added to the toolbar.
 */
export interface CustomButtonSettings {
    /** Unique ID for the custom button */
    id: string;
    /** Icon to use for the button (can be emoji, Unicode symbol, or HTML) */
    icon: string;
    /** Text label for the button */
    label: string;
    /** Tooltip shown on hover */
    tooltip: string;
    /** Callback invoked when button is pressed */
    callback: (id: string, svg: SVGElement) => void;
}
/**
 * Settings for the GVE Snapshot Rendition component.
 */
export interface GveRenditionSettings {
    /** Default font size in pixels */
    fontSize: number;
    /** Default font family */
    fontFamily: string;
    /** Default foreground color */
    foreColor: string;
    /** Default background color */
    backColor: string;
    /** Default italic state */
    italic: boolean;
    /** Default bold state */
    bold: boolean;
    /** Default underline thickness in pixels (undefined = no underline) */
    underline?: number;
    /** Default overline thickness in pixels (undefined = no overline) */
    overline?: number;
    /** Default strikethrough thickness in pixels (undefined = no strike) */
    strike?: number;
    /** Fraction of reference character width to use for space width (default: 0.33) */
    spaceWidthFraction: number;
    /** Spacing between each character in pixels */
    charSpacing: number;
    /** Line height multiplier (1.5 = 150% of font size) */
    lineHeight: number;
    /** Additional spacing between lines in pixels */
    lineSpacing: number;
    /** Top margin of the text rendition area in pixels */
    marginTop: number;
    /** Left margin of the text rendition area in pixels */
    marginLeft: number;
    /** Right margin of the text rendition area in pixels */
    marginRight: number;
    /** Bottom margin of the text rendition area in pixels */
    marginBottom: number;
    /** Initial zoom factor */
    initialZoom: number;
    /** Minimum zoom factor */
    minZoom: number;
    /** Maximum zoom factor */
    maxZoom: number;
    /** Zoom step for zoom in/out */
    zoomStep: number;
    /** Milliseconds between each frame in slideshow mode */
    slideshowInterval: number;
    /** Whether to loop the slideshow when it ends */
    slideshowLoop: boolean;
    /** Milliseconds delay between slideshow restarts (when looping) */
    slideshowDelay: number;
    /** Automatically continue forward through operations with the same groupId */
    autoForwardOnGroup: boolean;
    /** Enable detailed logging for diagnostic purposes */
    debug?: boolean;
    /** Array of custom buttons to add to the toolbar */
    customButtons?: CustomButtonSettings[];
    /** Array of button IDs (including custom buttons) to disable */
    disabledButtonIds?: string[];
    /** Catalog of animation JS code fragments, keyed by ID */
    animations: Record<string, string>;
    /** ID of animation to use for each character (from animations catalog) */
    charAnimationId?: string;
    /** Duration in milliseconds for spreading animation (0=no animation) */
    spreadTime: number;
    /** Duration in milliseconds for element fade-out animation
     * (backward navigation only): 0=no animation */
    backwardFadeOutTime: number;
    /** Duration in milliseconds for prolog panning animation when added
     * elements would be outside viewport (0=no animation) */
    prologDuration: number;
    /** Dictionary of hints, keyed by hint ID */
    hints: Record<string, OperationHint>;
    /** Margin around each rendered hint in pixels */
    hintMargin: number;
    /** Design-time width used when creating hints */
    hintDesignWidth: number;
    /** Design-time height used when creating hints */
    hintDesignHeight: number;
    /** Show the handle element from SVG hint (for diagnostic purposes) */
    showHintHandles: boolean;
    /** Padding to increase hilite rectangle size in pixels */
    hilitePadding: number;
    /** Duration in milliseconds for hilite fade in/out animation */
    hiliteFadeTime: number;
    /** Font family for the version text pane */
    textPaneFontFamily: string;
    /** Font size for the version text pane in pixels */
    textPaneFontSize: number;
    /** Function to generate operation summary HTML from data, version tag,
     *  and summary service */
    opSummaryFn?: (data: any, versionTag: string, summaryService: any) => string;
    /** Reference glyph width in pixels for scaling hovered text elements */
    refGlyphWidth: number;
    /** Reference glyph height in pixels for scaling hovered text elements */
    refGlyphHeight: number;
    /** Array of feature names to hide when "hidden features" option is not checked */
    hiddenFeatures?: string[];
    /** Optional map of version tag to color (e.g., {v0: '#FFE4E1', v1: '#E1FFE4'}) */
    versionColors?: Record<string, string>;
}
/**
 * Default settings for the component.
 */
export declare const DEFAULT_SETTINGS: GveRenditionSettings;
