import type { Source } from '../util';
import type PluginManager from '@jbrowse/core/PluginManager';
import type { AnyConfigurationSchemaType } from '@jbrowse/core/configuration';
import type { AnyReactComponentType, Feature } from '@jbrowse/core/util';
import type { ExportSvgDisplayOptions } from '@jbrowse/plugin-linear-genome-view';
import type { Instance } from 'mobx-state-tree';
export declare function stateModelFactory(_pluginManager: PluginManager, configSchema: AnyConfigurationSchemaType): import("mobx-state-tree").IModelType<{
    id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
    type: import("mobx-state-tree").ISimpleType<string>;
    rpcDriverName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
} & {
    heightPreConfig: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
} & {
    userBpPerPxLimit: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
    userByteSizeLimit: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
} & {
    blockState: import("mobx-state-tree").IMapType<import("mobx-state-tree").IModelType<{
        key: import("mobx-state-tree").ISimpleType<string>;
        region: import("mobx-state-tree").IType<import("@jbrowse/core/util").Region, import("@jbrowse/core/util").Region, import("@jbrowse/core/util").Region>;
        reloadFlag: import("mobx-state-tree").IType<number | undefined, number, number>;
        isLeftEndOfDisplayedRegion: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
        isRightEndOfDisplayedRegion: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
    }, {
        stopToken: string | undefined;
        filled: boolean;
        reactElement: React.ReactElement | undefined;
        features: Map<string, Feature> | undefined;
        layout: any;
        status: string;
        error: unknown;
        message: string | undefined;
        maxHeightReached: boolean;
        ReactComponent: ({ model, }: {
            model: {
                error?: unknown;
                reload: () => void;
                message: React.ReactNode;
                filled?: boolean;
                status?: string;
                reactElement?: React.ReactElement;
            };
        }) => import("react/jsx-runtime").JSX.Element | undefined;
        renderProps: any;
    } & {
        doReload(): void;
        afterAttach(): void;
        setStatus(message: string): void;
        setLoading(newStopToken: string): void;
        setMessage(messageText: string): void;
        setRendered(props: import("@jbrowse/plugin-linear-genome-view/src/BaseLinearDisplay/models/serverSideRenderedBlock").RenderedProps | undefined): void;
        setError(error: unknown): void;
        reload(): void;
        beforeDestroy(): void;
    }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
    configuration: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
        maxFeatureScreenDensity: {
            type: string;
            description: string;
            defaultValue: number;
        };
        fetchSizeLimit: {
            type: string;
            defaultValue: number;
            description: string;
        };
        height: {
            type: string;
            defaultValue: number;
            description: string;
        };
        mouseover: {
            type: string;
            description: string;
            defaultValue: string;
            contextVariable: string[];
        };
        jexlFilters: {
            type: string;
            description: string;
            defaultValue: never[];
        };
    }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "displayId">>;
} & {
    selectedRendering: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
    resolution: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<number>, [undefined]>;
    fill: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<boolean>>;
    minSize: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
    color: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
    posColor: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
    negColor: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
    summaryScoreMode: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
    rendererTypeNameState: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
    scale: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
    autoscale: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
    displayCrossHatches: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<boolean>>;
    constraints: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IModelType<{
        max: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
        min: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
    }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>, [undefined]>;
    configuration: AnyConfigurationSchemaType;
} & {
    type: import("mobx-state-tree").ISimpleType<"MultiLinearWiggleDisplay">;
    layout: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<Source[], Source[], Source[]>, [undefined]>;
}, {
    rendererTypeName: string;
    error: unknown;
    message: string | undefined;
} & {
    readonly RenderingComponent: React.FC<{
        model: {
            id: string;
            type: string;
            rpcDriverName: string | undefined;
        } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
            rendererTypeName: string;
            error: unknown;
            message: string | undefined;
        } & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
            id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
            type: import("mobx-state-tree").ISimpleType<string>;
            rpcDriverName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
        }, {
            rendererTypeName: string;
            error: unknown;
            message: string | undefined;
        }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
        onHorizontalScroll?: () => void;
        blockState?: Record<string, any>;
    }>;
    readonly DisplayBlurb: React.FC<{
        model: {
            id: string;
            type: string;
            rpcDriverName: string | undefined;
        } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
            rendererTypeName: string;
            error: unknown;
            message: string | undefined;
        } & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
            id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
            type: import("mobx-state-tree").ISimpleType<string>;
            rpcDriverName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
        }, {
            rendererTypeName: string;
            error: unknown;
            message: string | undefined;
        }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
    }> | null;
    readonly adapterConfig: any;
    readonly parentTrack: any;
    renderProps(): any;
    readonly rendererType: import("@jbrowse/core/pluggableElementTypes").RendererType;
    readonly DisplayMessageComponent: undefined | React.FC<any>;
    trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
    readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
    regionCannotBeRendered(): null;
} & {
    setMessage(arg?: string): void;
    setError(error?: unknown): void;
    setRpcDriverName(rpcDriverName: string): void;
    reload(): void;
} & {
    scrollTop: number;
} & {
    readonly height: number;
} & {
    setScrollTop(scrollTop: number): void;
    setHeight(displayHeight: number): number;
    resizeHeight(distance: number): number;
} & {
    featureDensityStatsP: undefined | Promise<import("@jbrowse/core/data_adapters/BaseAdapter").FeatureDensityStats>;
    featureDensityStats: undefined | import("@jbrowse/core/data_adapters/BaseAdapter").FeatureDensityStats;
    currStatsBpPerPx: number;
} & {
    readonly currentBytesRequested: number;
    readonly currentFeatureScreenDensity: number;
    readonly maxFeatureScreenDensity: any;
    readonly featureDensityStatsReady: boolean;
    readonly maxAllowableBytes: number;
} & {
    afterAttach(): void;
} & {
    setCurrStatsBpPerPx(n: number): void;
    setFeatureDensityStatsLimit(stats?: import("@jbrowse/core/data_adapters/BaseAdapter").FeatureDensityStats): void;
    getFeatureDensityStats(): Promise<import("@jbrowse/core/data_adapters/BaseAdapter").FeatureDensityStats>;
    setFeatureDensityStatsP(arg: any): void;
    setFeatureDensityStats(featureDensityStats?: import("@jbrowse/core/data_adapters/BaseAdapter").FeatureDensityStats): void;
    clearFeatureDensityStats(): void;
} & {
    readonly regionTooLarge: boolean;
    readonly regionTooLargeReason: string;
} & {
    readonly statsReadyAndRegionNotTooLarge: boolean;
    regionCannotBeRenderedText(_region: import("@jbrowse/core/util").Region): "" | "Force load to see features";
    regionCannotBeRendered(_region: import("@jbrowse/core/util").Region): import("react/jsx-runtime").JSX.Element | null;
} & {
    featureIdUnderMouse: undefined | string;
    contextMenuFeature: undefined | Feature;
} & {
    readonly DisplayMessageComponent: undefined | React.FC<any>;
    readonly blockType: "staticBlocks" | "dynamicBlocks";
    readonly blockDefinitions: import("@jbrowse/core/util/blockTypes").BlockSet;
} & {
    readonly renderDelay: number;
    readonly TooltipComponent: AnyReactComponentType;
    readonly selectedFeatureId: string | undefined;
} & {
    readonly features: import("@jbrowse/core/util/compositeMap").default<string, Feature>;
    readonly featureUnderMouse: Feature | undefined;
    getFeatureOverlapping(blockKey: string, x: number, y: number): string | undefined;
    getFeatureByID(blockKey: string, id: string): [number, number, number, number] | undefined;
    searchFeatureByID(id: string): [number, number, number, number] | undefined;
} & {
    addBlock(key: string, block: import("@jbrowse/core/util/blockTypes").BaseBlock): void;
    deleteBlock(key: string): void;
    selectFeature(feature: Feature): void;
    navToFeature(feature: Feature): void;
    clearFeatureSelection(): void;
    setFeatureIdUnderMouse(feature?: string): void;
    setContextMenuFeature(feature?: Feature): void;
} & {
    reload(): Promise<void>;
} & {
    trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
    contextMenuItems(): import("@jbrowse/core/ui").MenuItem[];
    renderProps(): any;
} & {
    renderSvg(opts: ExportSvgDisplayOptions): Promise<import("react/jsx-runtime").JSX.Element>;
    afterAttach(): void;
} & {
    message: undefined | string;
    stats: {
        currStatsBpPerPx: number;
        scoreMin: number;
        scoreMax: number;
    } | undefined;
    statsFetchInProgress: undefined | string;
} & {
    updateQuantitativeStats(stats: {
        currStatsBpPerPx: number;
        scoreMin: number;
        scoreMax: number;
    }): void;
    setColor(color?: string): void;
    setPosColor(color?: string): void;
    setNegColor(color?: string): void;
    setStatsLoading(arg?: string): void;
    selectFeature(feature: Feature): void;
    setResolution(res: number): void;
    setFill(fill: number): void;
    toggleLogScale(): void;
    setScaleType(scale?: string): void;
    setSummaryScoreMode(val: string): void;
    setAutoscale(val: string): void;
    setMaxScore(val?: number): void;
    setRendererType(val: string): void;
    setMinScore(val?: number): void;
    toggleCrossHatches(): void;
    setCrossHatches(cross: boolean): void;
} & {
    readonly adapterTypeName: any;
    readonly rendererTypeNameSimple: string;
    readonly filters: undefined;
    readonly scaleType: string;
    readonly maxScore: number;
    readonly minScore: number;
} & {
    readonly adapterCapabilities: string[];
    readonly rendererConfig: {
        [x: string]: any;
    } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
        setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
            [x: string]: any;
        } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
            setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
                [x: string]: any;
            } & import("mobx-state-tree/dist/internal").NonEmptyObject & any & import("mobx-state-tree").IStateTreeNode<AnyConfigurationSchemaType>);
        } & import("mobx-state-tree").IStateTreeNode<AnyConfigurationSchemaType>);
    } & import("mobx-state-tree").IStateTreeNode<AnyConfigurationSchemaType>;
    readonly autoscaleType: string;
} & {
    readonly domain: number[] | undefined;
} & {
    readonly filled: boolean;
    readonly summaryScoreModeSetting: string;
    readonly scaleOpts: {
        domain: number[] | undefined;
        stats: {
            currStatsBpPerPx: number;
            scoreMin: number;
            scoreMax: number;
        } | undefined;
        autoscaleType: string;
        scaleType: string;
        inverted: boolean;
    };
    readonly canHaveFill: boolean;
    readonly displayCrossHatchesSetting: boolean;
    readonly hasResolution: boolean;
    readonly hasGlobalStats: boolean;
} & {
    scoreTrackMenuItems(): ({
        label: string;
        subMenu: {
            label: string;
            onClick: () => void;
        }[];
        onClick?: undefined;
    } | {
        label: string;
        subMenu: {
            label: string;
            type: string;
            checked: boolean;
            onClick: () => void;
        }[];
        onClick?: undefined;
    } | {
        label: string;
        onClick: () => void;
        subMenu?: undefined;
    })[];
} & {
    reload(): Promise<void>;
} & {
    sourcesLoadingStopToken: string | undefined;
    featureUnderMouseVolatile: Feature | undefined;
    sourcesVolatile: Source[] | undefined;
} & {
    setSourcesLoading(str: string): void;
    setLayout(layout: Source[]): void;
    clearLayout(): void;
    setSources(sources: Source[]): void;
    setFeatureUnderMouse(f?: Feature): void;
} & {
    readonly featureUnderMouse: Feature | undefined;
    readonly TooltipComponent: AnyReactComponentType;
    readonly rendererTypeName: string;
} & {
    readonly graphType: boolean;
    readonly needsFullHeightScalebar: boolean;
    readonly isMultiRow: boolean;
    readonly needsCustomLegend: boolean;
    readonly canHaveFill: boolean;
    readonly renderColorBoxes: boolean;
    readonly prefersOffset: boolean;
    readonly sourcesWithoutLayout: {
        color: string;
        baseUri?: string;
        name: string;
        group?: string;
    }[] | undefined;
    readonly sources: {
        color: string;
        baseUri?: string;
        name: string;
        group?: string;
    }[] | undefined;
    readonly quantitativeStatsReady: boolean;
} & {
    readonly rowHeight: number;
    readonly rowHeightTooSmallForScalebar: boolean;
    readonly useMinimalTicks: boolean;
} & {
    adapterProps(): any;
    readonly ticks: {
        range: number[];
        values: number[];
        format: (d: import("d3-scale").NumberValue) => string;
        position: import("d3-scale").ScaleLinear<number, number, never> | import("d3-scale").ScaleQuantize<number, never>;
    } | undefined;
    readonly colors: string[];
    readonly quantitativeStatsRelevantToCurrentZoom: boolean;
} & {
    readonly legendFontSize: number;
    readonly canDisplayLegendLabels: boolean;
    readonly labelWidth: number;
    renderProps(): any;
    readonly hasResolution: boolean;
    readonly hasGlobalStats: boolean;
    readonly fillSetting: 2 | 1 | 0;
} & {
    trackMenuItems(): (import("@jbrowse/core/ui").MenuDivider | import("@jbrowse/core/ui").MenuSubHeader | import("@jbrowse/core/ui").NormalMenuItem | import("@jbrowse/core/ui").CheckboxMenuItem | import("@jbrowse/core/ui").RadioMenuItem | import("@jbrowse/core/ui").SubMenuItem | {
        label: string;
        subMenu: ({
            label: string;
            subMenu: {
                label: string;
                onClick: () => void;
            }[];
            onClick?: undefined;
        } | {
            label: string;
            subMenu: {
                label: string;
                type: string;
                checked: boolean;
                onClick: () => void;
            }[];
            onClick?: undefined;
        } | {
            label: string;
            onClick: () => void;
            subMenu?: undefined;
        })[];
        type?: undefined;
        checked?: undefined;
        onClick?: undefined;
    } | {
        label: string;
        subMenu: {
            label: string;
            type: string;
            checked: boolean;
            onClick: () => void;
        }[];
        type?: undefined;
        checked?: undefined;
        onClick?: undefined;
    } | {
        type: string;
        label: string;
        checked: boolean;
        onClick: () => void;
        subMenu?: undefined;
    })[];
} & {
    afterAttach(): void;
    renderSvg(opts: ExportSvgDisplayOptions): Promise<import("react/jsx-runtime").JSX.Element>;
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
export type WiggleDisplayStateModel = ReturnType<typeof stateModelFactory>;
export type WiggleDisplayModel = Instance<WiggleDisplayStateModel>;
export default stateModelFactory;
