import type PluginManager from '../PluginManager';
import type { BaseOptions } from '../data_adapters/BaseAdapter';
import type RpcManager from '../rpc/RpcManager';
import type { Feature, Region } from '../util';
import type { IAnyType, Instance } from '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("mobx-state-tree").IModelType<{
    configuration: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IReferenceType<IAnyType>>;
}, {
    error: unknown;
    loadingP: Promise<void> | undefined;
    volatileRegions: BasicRegion[] | undefined;
    refNameAliases: RefNameAliases | undefined;
    lowerCaseRefNameAliases: RefNameAliases | undefined;
    cytobands: Feature[] | undefined;
} & {
    getConf(arg: string): any;
} & {
    readonly initialized: boolean;
    readonly name: string;
    readonly regions: BasicRegion[] | undefined;
    readonly aliases: string[];
    readonly displayName: string | undefined;
    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;
    getRefNameColor(refName: string): string | undefined;
    isValidRefName(refName: string): boolean;
} & {
    setLoaded({ regions, refNameAliases, lowerCaseRefNameAliases, cytobands, }: {
        regions: Region[];
        refNameAliases: RefNameAliases;
        lowerCaseRefNameAliases: RefNameAliases;
        cytobands: Feature[];
    }): void;
    setError(e: unknown): void;
    setRegions(regions: Region[]): void;
    setRefNameAliases(aliases: RefNameAliases, lowerCaseAliases: RefNameAliases): void;
    setCytobands(cytobands: Feature[]): 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>;
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
export type AssemblyModel = ReturnType<typeof assemblyFactory>;
export type Assembly = Instance<AssemblyModel>;
export {};
