import type PluginManager from '../PluginManager.ts';
import type { BaseOptions } from '../data_adapters/BaseAdapter/index.ts';
import type RpcManager from '../rpc/RpcManager.ts';
import type { Feature, Region } from '../util/index.ts';
import type { IAnyType, Instance } from '@jbrowse/mobx-state-tree';
type AdapterConf = Record<string, unknown>;
type RefNameAliases = Record<string, string>;
export interface RefNameMap {
    forwardMap: RefNameAliases;
    reverseMap: RefNameAliases;
}
export interface BasicRegion {
    start: number;
    end: number;
    refName: string;
    assemblyName: string;
}
export default function assemblyFactory(assemblyConfigType: IAnyType, pluginManager: PluginManager): import("@jbrowse/mobx-state-tree").IModelType<{
    configuration: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IReferenceType<IAnyType>>;
}, {
    error: unknown;
    loadingP: Promise<void> | undefined;
    volatileRegions: BasicRegion[] | undefined;
    refNameAliases: RefNameAliases | undefined;
    canonicalToSeqAdapterRefNames: Record<string, string> | undefined;
    cytobands: Feature[] | undefined;
} & {
    getConf(arg: string): any;
    readonly lowerCaseRefNameAliases: {
        [k: string]: string;
    } | undefined;
} & {
    readonly initialized: boolean;
    readonly name: string;
    readonly regions: BasicRegion[] | undefined;
    readonly aliases: string[];
    readonly displayName: string;
    hasName(name: string): boolean;
    readonly allAliases: string[];
    readonly allRefNames: string[] | undefined;
    readonly lowerCaseRefNames: string[] | undefined;
    readonly allRefNamesWithLowerCase: string[] | undefined;
    readonly rpcManager: RpcManager;
    readonly refNameColors: string[];
} & {
    readonly refNames: string[] | undefined;
} & {
    getCanonicalRefName(refName: string): string | undefined;
    getCanonicalRefName2(refName: string): string;
    getRefNameColor(refName: string): string | undefined;
    isValidRefName(refName: string): boolean;
    getSeqAdapterRefName(canonicalRefName: string): string;
} & {
    setLoaded({ regions, refNameAliases, cytobands, }: {
        regions: Region[];
        refNameAliases: RefNameAliases;
        cytobands: Feature[];
    }): void;
    setError(e: unknown): void;
    setRegions(regions: Region[]): void;
    setRefNameAliases(aliases: RefNameAliases): void;
    setCytobands(cytobands: Feature[]): void;
    setCanonicalToSeqAdapterRefNames(map: Record<string, string>): void;
    setLoadingP(p?: Promise<void>): void;
    load(): Promise<void>;
    loadPre(): Promise<void>;
} & {
    getAdapterMapEntry(adapterConf: AdapterConf, options: BaseOptions): Promise<RefNameMap>;
    getRefNameMapForAdapter(adapterConf: AdapterConf, opts: BaseOptions): Promise<RefNameAliases>;
    getReverseRefNameMapForAdapter(adapterConf: AdapterConf, opts: BaseOptions): Promise<RefNameAliases>;
    afterCreate(): void;
}, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>;
export type AssemblyModel = ReturnType<typeof assemblyFactory>;
export type Assembly = Instance<AssemblyModel>;
export {};
