import type React from 'react';
import type { SliceRegion } from './slices';
import type PluginManager from '@jbrowse/core/PluginManager';
import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
import type { MenuItem } from '@jbrowse/core/ui';
import type { Region as IRegion } from '@jbrowse/core/util/types';
import type { Region } from '@jbrowse/core/util/types/mst';
import type { Instance, SnapshotOrInstance } from 'mobx-state-tree';
export interface ExportSvgOptions {
    rasterizeLayers?: boolean;
    filename?: string;
    Wrapper?: React.FC<{
        children: React.ReactNode;
    }>;
    themeName?: string;
}
declare function stateModelFactory(pluginManager: PluginManager): import("mobx-state-tree").IModelType<{
    id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
    displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
    minimized: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
} & {
    type: import("mobx-state-tree").ISimpleType<"CircularView">;
    offsetRadians: import("mobx-state-tree").IType<number | undefined, number, number>;
    bpPerPx: import("mobx-state-tree").IType<number | undefined, number, number>;
    tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
    hideVerticalResizeHandle: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
    hideTrackSelectorButton: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
    lockedFitToWindow: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
    disableImportForm: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
    height: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<number>, [undefined]>;
    displayedRegions: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<IRegion[], IRegion[], IRegion[]>, [undefined]>;
    scrollX: import("mobx-state-tree").IType<number | undefined, number, number>;
    scrollY: import("mobx-state-tree").IType<number | undefined, number, number>;
    minimumRadiusPx: import("mobx-state-tree").IType<number | undefined, number, number>;
    spacingPx: import("mobx-state-tree").IType<number | undefined, number, number>;
    paddingPx: import("mobx-state-tree").IType<number | undefined, number, number>;
    lockedPaddingPx: import("mobx-state-tree").IType<number | undefined, number, number>;
    minVisibleWidth: import("mobx-state-tree").IType<number | undefined, number, number>;
    minimumBlockWidth: import("mobx-state-tree").IType<number | undefined, number, number>;
    trackSelectorType: import("mobx-state-tree").IType<string | undefined, string, string>;
}, {
    width: number;
} & {
    menuItems(): MenuItem[];
} & {
    setDisplayName(name: string): void;
    setWidth(newWidth: number): void;
    setMinimized(flag: boolean): void;
} & {
    volatileWidth: number | undefined;
    error: unknown;
} & {
    readonly width: number;
    readonly visibleSection: {
        rho: [number, number];
        theta: [number, number];
    };
    readonly circumferencePx: number;
    readonly radiusPx: number;
    readonly bpPerRadian: number;
    readonly pxPerRadian: number;
    readonly centerXY: [number, number];
    readonly totalBp: number;
    readonly maximumRadiusPx: number;
    readonly maxBpPerPx: number;
    readonly minBpPerPx: number;
    readonly atMaxBpPerPx: boolean;
    readonly atMinBpPerPx: boolean;
    readonly tooSmallToLock: boolean;
    readonly figureDimensions: [number, number];
    readonly figureWidth: number;
    readonly figureHeight: number;
    readonly elidedRegions: SliceRegion[];
    readonly assemblyNames: string[];
    readonly initialized: boolean;
} & {
    readonly staticSlices: import("./slices").Slice[];
} & {
    readonly visibleStaticSlices: import("./slices").Slice[];
} & {
    setWidth(newWidth: number): number;
    setHeight(newHeight: number): number;
    resizeHeight(distance: number): number;
    resizeWidth(distance: number): number;
    rotateClockwiseButton(): void;
    rotateCounterClockwiseButton(): void;
    rotateClockwise(distance?: number): void;
    rotateCounterClockwise(distance?: number): void;
    zoomInButton(): void;
    zoomOutButton(): void;
    setBpPerPx(newVal: number): void;
    setModelViewWhenAdjust(secondCondition: boolean): void;
    setDisplayedRegions(regions: SnapshotOrInstance<typeof Region>[]): void;
    activateTrackSelector(): import("@jbrowse/core/util").Widget;
    toggleTrack(trackId: string): boolean;
    setError(error: unknown): void;
    showTrack(trackId: string, initialSnapshot?: {}): void;
    addTrackConf(configuration: AnyConfigurationModel, initialSnapshot?: {}): void;
    hideTrack(trackId: string): number;
    toggleFitToWindowLock(): boolean;
    exportSvg(opts?: ExportSvgOptions): Promise<void>;
} & {
    menuItems(): MenuItem[];
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
export type CircularViewStateModel = ReturnType<typeof stateModelFactory>;
export type CircularViewModel = Instance<CircularViewStateModel>;
export default stateModelFactory;
