import { IViewer } from '../../IViewer.js';
import { Extension } from './Extension.js';
import { FilteringExtension } from './FilteringExtension.js';
import { PipelineOptions } from '../pipeline/Pipelines/Pipeline.js';
import { EdgesPipelineOptions } from '../pipeline/Pipelines/EdgesPipeline.js';
export declare enum ViewMode {
    DEFAULT = 0,
    SOLID = 1,
    PEN = 2,
    ARCTIC = 3,
    SHADED = 4
}
export declare enum ViewModeEvent {
    Changed = "view-mode-changed"
}
export interface ViewModeEventPayload {
    [ViewModeEvent.Changed]: ViewMode;
}
export type ViewModeOptions = PipelineOptions & EdgesPipelineOptions;
export declare class ViewModes extends Extension {
    protected filteringExtension: FilteringExtension;
    get inject(): (typeof FilteringExtension)[];
    protected _viewModeOptions: Required<ViewModeOptions>;
    get viewModeOptions(): ViewModeOptions;
    protected _viewMode: ViewMode;
    get viewMode(): ViewMode;
    constructor(viewer: IViewer, filteringExtension: FilteringExtension);
    on<T extends ViewModeEvent>(eventType: T, listener: (arg: ViewModeEventPayload[T]) => void): void;
    setViewMode(viewMode: ViewMode, options?: ViewModeOptions): void;
    protected updateViewModes(viewMode: ViewMode, options?: ViewModeOptions): void;
    protected updateViewModeOptions(options?: ViewModeOptions): void;
}
