import type { ModificationType, ModificationTypeWithColor, SortedBy } from '../shared/types';
import type { AnyConfigurationSchemaType } from '@jbrowse/core/configuration';
import type { Instance } from 'mobx-state-tree';
declare function stateModelFactory(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, import("@jbrowse/core/util").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">>;
} & {
    configuration: AnyConfigurationSchemaType;
    featureHeight: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
    noSpacing: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<boolean>>;
    fadeLikelihood: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<boolean>>;
    trackMaxHeight: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
    colorBySetting: import("mobx-state-tree").IType<import("../shared/types").ColorBy | undefined, import("../shared/types").ColorBy | undefined, import("../shared/types").ColorBy | undefined>;
    filterBySetting: import("mobx-state-tree").IType<import("../shared/types").FilterBy | undefined, import("../shared/types").FilterBy | undefined, import("../shared/types").FilterBy | undefined>;
    jexlFilters: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").ISimpleType<string>>, [undefined]>;
    hideSmallIndelsSetting: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<boolean>>;
} & {
    type: import("mobx-state-tree").ISimpleType<"LinearPileupDisplay">;
    configuration: AnyConfigurationSchemaType;
    showSoftClipping: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
    mismatchAlpha: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<boolean>>;
    sortedBy: import("mobx-state-tree").IType<SortedBy | undefined, SortedBy | undefined, SortedBy | 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 | import("@jbrowse/core/util").Feature;
} & {
    readonly DisplayMessageComponent: undefined | React.FC<any>;
    readonly blockType: "staticBlocks" | "dynamicBlocks";
    readonly blockDefinitions: import("@jbrowse/core/util/blockTypes").BlockSet;
} & {
    readonly renderDelay: number;
    readonly TooltipComponent: import("@jbrowse/core/util").AnyReactComponentType;
    readonly selectedFeatureId: string | undefined;
} & {
    readonly features: import("@jbrowse/core/util/compositeMap").default<string, import("@jbrowse/core/util").Feature>;
    readonly featureUnderMouse: import("@jbrowse/core/util").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: import("@jbrowse/core/util").Feature): void;
    navToFeature(feature: import("@jbrowse/core/util").Feature): void;
    clearFeatureSelection(): void;
    setFeatureIdUnderMouse(feature?: string): void;
    setContextMenuFeature(feature?: import("@jbrowse/core/util").Feature): void;
} & {
    reload(): Promise<void>;
} & {
    trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
    contextMenuItems(): import("@jbrowse/core/ui").MenuItem[];
    renderProps(): any;
} & {
    renderSvg(opts: import("@jbrowse/plugin-linear-genome-view").ExportSvgDisplayOptions): Promise<import("react/jsx-runtime").JSX.Element>;
    afterAttach(): void;
} & {
    colorTagMap: import("mobx").ObservableMap<string, string>;
    featureUnderMouseVolatile: undefined | import("@jbrowse/core/util").Feature;
    tagsReady: boolean;
} & {
    readonly colorBy: any;
    readonly filterBy: any;
} & {
    readonly autorunReady: boolean;
    readonly hideSmallIndels: boolean | undefined;
} & {
    setTagsReady(flag: boolean): void;
    setMaxHeight(n?: number): void;
    setFeatureHeight(n?: number): void;
    setNoSpacing(flag?: boolean): void;
    setColorScheme(colorScheme: import("../shared/types").ColorBy): void;
    updateColorTagMap(uniqueTag: string[]): void;
    setFeatureUnderMouse(feat?: import("@jbrowse/core/util").Feature): void;
    selectFeature(feature: import("@jbrowse/core/util").Feature): void;
    copyFeatureToClipboard(feature: import("@jbrowse/core/util").Feature): void;
    setConfig(conf: import("@jbrowse/core/configuration").AnyConfigurationModel): void;
    setFilterBy(filter: import("../shared/types").FilterBy): void;
    setJexlFilters(filters: string[]): void;
    setHideSmallIndels(arg: boolean): void;
} & {
    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 maxHeight: any;
    readonly featureHeightSetting: any;
    readonly featureUnderMouse: import("@jbrowse/core/util").Feature | undefined;
    renderReady(): boolean;
    readonly filters: import("@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain").default;
} & {
    readonly rendererTypeName: string;
    contextMenuItems(): ({
        label: string;
        icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
            muiName: string;
        };
        onClick: () => void;
    } | {
        label: string;
        icon: typeof import("@jbrowse/core/ui/Icons").ContentCopy;
        onClick: () => void;
    })[];
    readonly DisplayBlurb: ({ model, }: {
        model: {
            sortedBy?: SortedBy;
        };
    }) => import("react/jsx-runtime").JSX.Element | null;
    renderPropsPre(): any;
    colorSchemeSubMenuItems(): {
        label: string;
        onClick: () => void;
    }[];
    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;
        priority: number;
        type: string;
        checked: boolean | undefined;
        onClick: () => void;
        icon?: undefined;
    } | {
        label: string;
        icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
            muiName: string;
        };
        onClick: () => void;
        priority?: undefined;
        type?: undefined;
        checked?: undefined;
    })[];
} & {
    renderProps(): any;
} & {
    afterAttach(): void;
} & {
    sortReady: boolean;
    currSortBpPerPx: number;
    visibleModifications: import("mobx").ObservableMap<string, ModificationTypeWithColor>;
    modificationsReady: boolean;
} & {
    setCurrSortBpPerPx(n: number): void;
    updateVisibleModifications(uniqueModifications: ModificationType[]): void;
    setModificationsReady(flag: boolean): void;
    setSortReady(flag: boolean): void;
    clearSelected(): void;
    toggleSoftClipping(): void;
    toggleMismatchAlpha(): void;
    setSortedBy(type: string, tag?: string): void;
    setFeatureHeight(n?: number): void;
} & {
    reload(): void;
} & {
    readonly visibleModificationTypes: 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 mismatchAlphaSetting: any;
    renderReady(): boolean;
} & {
    renderPropsPre(): any;
    renderProps(): any;
    trackMenuItems(): readonly [...import("@jbrowse/core/ui").MenuItem[], {
        readonly label: "Sort by...";
        readonly icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
            muiName: string;
        };
        readonly disabled: boolean;
        readonly subMenu: readonly [...{
            label: string;
            onClick: () => void;
        }[], {
            readonly label: "Sort by tag...";
            readonly onClick: () => void;
        }, {
            readonly label: "Clear sort";
            readonly onClick: () => void;
        }];
    }, {
        readonly label: "Color by...";
        readonly icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
            muiName: string;
        };
        readonly subMenu: readonly [{
            readonly label: "Pair orientation";
            readonly onClick: () => void;
        }, {
            readonly label: "Modifications";
            readonly type: "subMenu";
            readonly subMenu: ({
                label: string;
                onClick: () => void;
                type?: undefined;
            } | {
                type: string;
                label?: undefined;
                onClick?: undefined;
            })[];
        }, {
            readonly label: "Insert size";
            readonly onClick: () => void;
        }, ...{
            label: string;
            onClick: () => void;
        }[]];
    }, {
        readonly label: "Group by...";
        readonly icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
            muiName: string;
        };
        readonly onClick: () => void;
    }, {
        readonly label: "Show soft clipping";
        readonly icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
            muiName: string;
        };
        readonly type: "checkbox";
        readonly checked: boolean;
        readonly onClick: () => void;
    }, {
        readonly label: "Fade mismatches by quality";
        readonly type: "checkbox";
        readonly checked: any;
        readonly onClick: () => void;
    }];
} & {
    afterAttach(): void;
}, {
    type: string;
} & Partial<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
    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, import("@jbrowse/core/util").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">>;
} & {
    configuration: AnyConfigurationSchemaType;
    featureHeight: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
    noSpacing: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<boolean>>;
    fadeLikelihood: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<boolean>>;
    trackMaxHeight: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
    colorBySetting: import("mobx-state-tree").IType<import("../shared/types").ColorBy | undefined, import("../shared/types").ColorBy | undefined, import("../shared/types").ColorBy | undefined>;
    filterBySetting: import("mobx-state-tree").IType<import("../shared/types").FilterBy | undefined, import("../shared/types").FilterBy | undefined, import("../shared/types").FilterBy | undefined>;
    jexlFilters: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").ISimpleType<string>>, [undefined]>;
    hideSmallIndelsSetting: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<boolean>>;
}>> & import("mobx-state-tree/dist/internal").NonEmptyObject & import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
export type LinearPileupDisplayStateModel = ReturnType<typeof stateModelFactory>;
export type LinearPileupDisplayModel = Instance<LinearPileupDisplayStateModel>;
export default stateModelFactory;
