/// <reference types="react" />
/**
 * Sequence interval object based on gff3 field specs. Recursively defined:
 * SequenceInterval children are SequenceIntervals themselves.
 */
export declare type SequenceInterval = {
    /**
     * Unique identifier for the sequence interval
     */
    ID: string;
    /**
     * Unique identifier of the sequence the interval belongs to
     */
    seqid: string;
    /**
     * Source of the sequence interval, i.e. what tool was used to generate
     * or which organisation provided the annotation
     */
    source: string;
    /**
     * Type of interval following the sequence ontology, e.g. mRNA, CDS, or gene
     */
    interval_type: string;
    /**
     * Start coordinate
     */
    start: number;
    /**
     * End coordinate
     */
    end: number;
    /**
     * Sequence interval confidence score
     */
    score: number | string;
    /**
     * Sequence strand
     */
    strand: "+" | "-" | ".";
    /**
     * Interval phase (only relevant for CDS features)
     */
    phase: 0 | 1 | 2 | ".";
    /**
     * Additional attributes (AKA gff3 column 9)
     * @example
     * ```json
     * {dbxref: ['InterPro:IPR002376','InterPro:IPR001555'], name:'PurN'}
     * ```
     */
    attributes: Record<string, string[] | string>;
    /**
     * Child sequence intervals of the current sequence interval. This makes
     * that genemodels can be represented as a Directed Acyclic Graph. A common
     * representation is `gene` -> `mRNA(s)` -> `exon(s)`
     */
    children?: SequenceInterval[];
};
/**
 * GeneModel component
 * @example A minimal setting:
 *
 * ```typescript
 * import { GeneModel } from 'react-bio-viz';
 * <GeneModel gene={gene} />
 * ```
 *
 * @example Dynamically observing resize events using `react-resize-detector`:
 *
 * ```typescript
 * import { GeneModel } from 'react-bio-viz';
 * import ReactResizeDetector from 'react-resize-detector';
 * <ReactResizeDetector handleWidth>
 *  ({width}) => (
 *    <GeneModel gene={gene} width={wdith} />
 *  )
 * </ReactResizeDetector>
 * ```
 * @param options
 * @param options.gene SequenceInterval object of the gene
 * @param options.width Width of the rendered SVG element (default = 500)
 * @param options.colorSeed String to be used as seed for random color generation
 * (default = "42")
 * @param options.showScale Show a scalebar indicating genomic position
 * (default = true)
 */
export default function GeneModel({ gene, width, colorSeed, showScale, exonPopoverFn, panMin, panMax, }: {
    gene: SequenceInterval;
    width?: number;
    colorSeed?: string;
    showScale?: boolean;
    exonPopoverFn?: (arg0: SequenceInterval) => JSX.Element;
    panMin?: number;
    panMax?: number;
}): JSX.Element;
