import FeatureRendererType from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
import type { Source } from './shared/types';
import type { RenderArgsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
import type { Feature } from '@jbrowse/core/util';
import type { ThemeOptions } from '@mui/material';
export interface RenderArgs extends RenderArgsDeserialized {
    bpPerPx: number;
    height: number;
    highResolutionScaling: number;
    themeOptions: ThemeOptions;
}
export interface RenderArgsDeserializedWithFeatures extends RenderArgs {
    features: Map<string, Feature>;
}
export interface MultiRenderArgsDeserialized extends RenderArgsDeserializedWithFeatures {
    sources: Source[];
}
export default abstract class MultiVariantBaseRenderer extends FeatureRendererType {
    supportsSVG: boolean;
    render(renderProps: RenderArgs): Promise<{
        features: Map<string, Feature>;
        height: number;
        width: number;
        containsNoTransferables: boolean;
        canvasRecordedData: any;
        reactElement?: React.ReactElement;
        html?: string;
    } | {
        features: Map<string, Feature>;
        height: number;
        width: number;
        containsNoTransferables: boolean;
        reactElement: import("react/jsx-runtime").JSX.Element;
        html?: string;
    } | {
        features: Map<string, Feature>;
        height: number;
        width: number;
        containsNoTransferables: boolean;
        imageData: any;
        reactElement?: React.ReactElement;
        html?: string;
    }>;
    abstract draw<T extends RenderArgsDeserializedWithFeatures>(ctx: CanvasRenderingContext2D, props: T): Promise<Record<string, unknown> | undefined>;
}
export type { RenderArgsSerialized, RenderResults, ResultsDeserialized, ResultsSerialized, } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
