import { ICommand } from 'sprotty';
import { Action } from 'sprotty-protocol';
import { Registry } from '../base/registry';
import { RangeOption, RenderOption, TransformationOptionType } from './option-models';
/**
 * Whether the sidebar panel is pinned or not.
 */
export declare class PinSidebarOption implements RenderOption {
    static readonly ID: string;
    static readonly NAME: string;
    static readonly DEFAULT: boolean;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly initialValue: boolean;
    currentValue: boolean;
    debug: boolean;
}
/**
 * Resize the diagram to fit the viewport if it is redrawn after a model update
 * or a viewport resize.
 * This has to have the same id as the corresponding FitToScreenAction.
 */
export declare class ResizeToFit implements RenderOption {
    static readonly ID: string;
    static readonly NAME: string;
    static readonly DEFAULT: boolean;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly initialValue: boolean;
    readonly description = "Always resize to fit after diagram refresh.";
    currentValue: boolean;
    debug: boolean;
}
/**
 * Uses a light background instead of an applied theme.
 */
export declare class ForceLightBackground implements RenderOption {
    static readonly ID: string;
    static readonly NAME: string;
    static readonly DEFAULT: boolean;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly initialValue: boolean;
    readonly renderCategory: string;
    readonly description = "Use light background regardless of the color scheme.";
    currentValue: boolean;
}
export declare class ShowConstraintOption implements RenderOption {
    static readonly ID: string;
    static readonly NAME: string;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly initialValue: boolean;
    readonly renderCategory: string;
    readonly description = "Show marker for nodes that have interactive layout constraints set.";
    currentValue: boolean;
}
export declare class Appearance implements RenderOption {
    static readonly ID: string;
    static readonly NAME: string;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly initialValue: boolean;
    readonly description = "Appearance Category";
    currentValue: boolean;
}
/**
 * Smart Zoom category.
 */
export declare class SmartZoom implements RenderOption {
    static readonly ID: string;
    static readonly NAME: string;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly initialValue: boolean;
    readonly renderCategory: string;
    readonly description = "Smart Zoom Category";
    currentValue: boolean;
    debug: boolean;
}
/**
 * Boolean option to enable and disable the smart zoom feature.
 * This corresponds to the automatic detail level of regions and states
 * as well as limiting visible elements.
 */
export declare class UseSmartZoom implements RenderOption {
    static readonly ID: string;
    static readonly NAME: string;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly initialValue: boolean;
    readonly renderCategory: string;
    readonly description = "Enables Smart Zoom";
    currentValue: boolean;
}
/**
 * Threshold for full detail level.
 * Corresponds to the regions size compared to the current viewport.
 */
export declare class FullDetailRelativeThreshold implements RangeOption {
    static readonly ID: string;
    static readonly NAME: string;
    static readonly DEFAULT: number;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly values: any[];
    readonly range: {
        first: number;
        second: number;
    };
    readonly stepSize = 0.01;
    readonly initialValue: number;
    readonly renderCategory: string;
    readonly description: string;
    currentValue: number;
    debug: boolean;
}
/**
 * Threshold for full detail level.
 * Corresponds to the regions scale using the current viewport.
 */
export declare class FullDetailScaleThreshold implements RangeOption {
    static readonly ID: string;
    static readonly NAME: string;
    static readonly DEFAULT: number;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly values: any[];
    readonly range: {
        first: number;
        second: number;
    };
    readonly stepSize = 0.01;
    readonly initialValue: number;
    readonly renderCategory: string;
    readonly description: string;
    currentValue: number;
    debug: boolean;
}
/**
 * Boolean option toggling the use of text element replacement with rectangles.
 */
export declare class SimplifySmallText implements RenderOption {
    static readonly ID: string;
    static readonly NAME: string;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly initialValue: boolean;
    readonly renderCategory: string;
    readonly description = "Whether illegible text is simplified to colored rectangles.";
    currentValue: boolean;
    debug: boolean;
}
/**
 * Threshold under which text element simplification occurs in pixels.
 */
export declare class TextSimplificationThreshold implements RangeOption {
    static readonly ID: string;
    static readonly NAME: string;
    static readonly DEFAULT: number;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly values: any[];
    readonly range: {
        first: number;
        second: number;
    };
    readonly stepSize = 0.1;
    readonly initialValue: number;
    readonly renderCategory: string;
    readonly description = "The threshold font size to simplify text.\nIf set to 3 a text which is 3 or less pixel high is simplified.";
    currentValue: number;
    debug: boolean;
}
/**
 * The factor by which titles of collapsed regions get scaled by
 * in relation to their size at native resolution.
 */
export declare class TitleScalingFactor implements RangeOption {
    static readonly ID: string;
    static readonly NAME: string;
    static readonly DEFAULT: number;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly values: any[];
    readonly range: {
        first: number;
        second: number;
    };
    readonly stepSize = 0.01;
    readonly initialValue: number;
    readonly renderCategory: string;
    readonly description: string;
    currentValue: number;
    debug: boolean;
}
/**
 * Boolean option to toggle the scaling of lines based on zoom level.
 */
export declare class UseMinimumLineWidth implements RenderOption {
    static readonly ID: string;
    static readonly NAME: string;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly initialValue: boolean;
    readonly renderCategory: string;
    readonly description = "Whether all borders and lines are at least as wide as set by the corresponding 'Minimum Line Width' option.";
    currentValue: boolean;
    debug: boolean;
}
/**
 * The size scaled lines should have as a minimum at any zoom level in pixels.
 */
export declare class MinimumLineWidth implements RangeOption {
    static readonly ID: string;
    static readonly NAME: string;
    static readonly DEFAULT: number;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly values: any[];
    readonly range: {
        first: number;
        second: number;
    };
    readonly stepSize = 0.01;
    readonly initialValue: number;
    readonly renderCategory: string;
    readonly description = "The minium border or line width.\nIf set to 0.5 each edge or border is at least 0.5 pixel wide.";
    currentValue: number;
    debug: boolean;
}
export declare enum ShadowOption {
    /** A real svg shadow. */
    PAPER_MODE = "Paper Mode",
    /** The shape of the node drawn with different opacity multiple times behind the node. */
    KIELER_STYLE = "KIELER Style"
}
/**
 * The style shadows should be drawn in, either the paper mode shadows (nice, but slow in
 * performance) or in default KIELER-style (fast, not as nice looking).
 */
export declare class Shadows implements RenderOption {
    static readonly ID: string;
    static readonly NAME: string;
    static readonly DEFAULT: ShadowOption;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly initialValue: ShadowOption;
    readonly renderCategory: string;
    readonly values?: ShadowOption[] | undefined;
    readonly description: string;
    currentValue: ShadowOption;
}
/**
 * Whether going to a Bookmark should be animated
 */
export declare class AnimateGoToBookmark implements RenderOption {
    static readonly ID: string;
    static readonly NAME: string;
    static readonly DEFAULT: boolean;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly initialValue: boolean;
    currentValue: boolean;
}
/**
 * Boolean option to toggle debug options.
 */
export declare class DebugOptions implements RenderOption {
    static readonly ID: string;
    static readonly NAME: string;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly initialValue: boolean;
    readonly description = "Whether debug options should be shown.";
    currentValue: boolean;
}
export interface RenderOptionType {
    readonly ID: string;
    readonly NAME: string;
    new (): RenderOption;
}
export interface RenderOptionDefault extends RenderOptionType {
    readonly DEFAULT: any;
}
/** {@link Registry} that stores and updates different render options. */
export declare class RenderOptionsRegistry extends Registry {
    private _renderOptions;
    private storage;
    constructor();
    init(): void;
    /**
     * Restores options that where previously persisted in storage. Since render
     * options are not provided by the server, they have to be retrieved from storage.
     */
    private loadPersistedData;
    /** Registers a single render option. */
    register(Option: RenderOptionType): void;
    /** Convenience method to register all given options in order. */
    registerAll(...Options: RenderOptionType[]): void;
    /** Unregisters a single render option. */
    unregister(Option: RenderOptionType): boolean;
    /** Convenience method to unregister all given options in order. */
    unregisterAll(...Options: RenderOptionType[]): boolean;
    /** Handles the render options actions. */
    handle(action: Action): void | Action | ICommand;
    get allRenderOptions(): RenderOption[];
    getValue(Option: RenderOptionType): any | undefined;
    getValueOrDefault(Option: RenderOptionDefault): any;
}
//# sourceMappingURL=render-options-registry.d.ts.map