import { ICommand } from 'sprotty';
import { Action } from 'sprotty-protocol';
import { Registry } from './base/registry';
import { Preference, TransformationOptionType } from './options/option-models';
/**
 * Indicates whether or not a text selection should select the corresponding diagram part. */
export declare class ShouldSelectDiagramOption implements Preference {
    static readonly ID: string;
    static readonly NAME: string;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly initialValue: boolean;
    currentValue: boolean;
    notifyServer: boolean;
}
/**
 * Indicates whether or nat a selection in the diagram should also highlight the corresponding text.
 */
export declare class ShouldSelectTextOption implements Preference {
    static readonly ID: string;
    static readonly NAME: string;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly initialValue: boolean;
    currentValue: boolean;
    notifyServer: boolean;
}
/**
 * Instructs the server if the diagram should be sent incrementally in pieces.
 */
export declare class IncrementalDiagramGeneratorOption implements Preference {
    static readonly ID: string;
    static readonly NAME: string;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly initialValue: boolean;
    currentValue: boolean;
    notifyServer: boolean;
    debug: boolean;
}
/**
 * Switch between client-only and server-only layout.
 */
export declare class ClientLayoutOption implements Preference {
    static readonly ID: string;
    static readonly NAME: string;
    readonly description: string | undefined;
    readonly id: string;
    readonly name: string;
    readonly type: TransformationOptionType;
    readonly initialValue: boolean;
    currentValue: boolean;
    notifyServer: boolean;
    debug: boolean;
}
export interface PreferenceType {
    readonly ID: string;
    readonly NAME: string;
    new (): Preference;
}
/**
 * {@link Registry} that stores user preferences which change the behavior of the diagram view.
 *
 * This registry should store options or preferences that are not provided by the Synthesis as LayoutOptions but that also
 * should be send to the server.
 * In contrast to RenderOptions they are cannot be solely handled by the client.
 */
export declare class PreferencesRegistry extends Registry {
    private _preferences;
    private connection;
    private storage;
    private dispatcher;
    constructor();
    init(): void;
    /**
     * Restores options that where previously persisted in storage.
     * Since preferences are not provided by the server, they have to be retrieved from storage.
     */
    private loadPersistedData;
    register(Option: PreferenceType): void;
    handle(action: Action): void | Action | ICommand;
    /** Notifies the server about changed preferences that are supported by the client. */
    private notifyServer;
    getValue(option: PreferenceType): any | undefined;
    /** Reset all stored options when the storage gets cleared from outside. */
    private handleClear;
}
//# sourceMappingURL=preferences-registry.d.ts.map