import { RefObject } from "react";
import { StateRef } from "../helpers/reactUtils";
import { ISignal } from "ste-signals";
export type VisibilityStatus = 'all' | 'allButSelection' | 'onlySelection' | 'some' | 'none';
export interface IsolationRef {
    adapter: RefObject<IsolationAdapter>;
    visibility: StateRef<VisibilityStatus>;
    autoIsolate: StateRef<boolean>;
    showPanel: StateRef<boolean>;
    showGhost: StateRef<boolean>;
    ghostOpacity: StateRef<string>;
    showRooms: StateRef<boolean>;
}
export interface IsolationAdapter {
    onSelectionChanged: ISignal;
    onVisibilityChange: ISignal;
    computeVisibility: () => VisibilityStatus;
    hasSelection(): boolean;
    hasVisibleSelection: () => boolean;
    hasHiddenSelection: () => boolean;
    clearSelection(): void;
    isolateSelection(): void;
    hideSelection(): void;
    showSelection(): void;
    isolate(instances: number[]): void;
    show(instances: number[]): void;
    hide(instances: number[]): void;
    hideAll(): void;
    showAll(): void;
    showGhost(show: boolean): void;
    getGhostOpacity(): number;
    setGhostOpacity(opacity: number): void;
    getShowRooms(): boolean;
    setShowRooms(show: boolean): void;
}
export declare function useSharedIsolation(adapter: IsolationAdapter): IsolationRef;
