/**
 * Copyright (c) 2019-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 */
import { Color } from '../mol-util/color';
import { Structure, StructureElement } from '../mol-model/structure';
import { Script } from '../mol-script/script';
export { Overpaint };
declare type Overpaint = {
    readonly layers: ReadonlyArray<Overpaint.Layer>;
};
declare function Overpaint(layers: ReadonlyArray<Overpaint.Layer>): Overpaint;
declare namespace Overpaint {
    type Layer = {
        readonly loci: StructureElement.Loci;
        readonly color: Color;
        readonly clear: boolean;
    };
    const Empty: Overpaint;
    function areEqual(oA: Overpaint, oB: Overpaint): boolean;
    function isEmpty(overpaint: Overpaint): boolean;
    function remap(overpaint: Overpaint, structure: Structure): {
        layers: Layer[];
    };
    function merge(overpaint: Overpaint): Overpaint;
    function filter(overpaint: Overpaint, filter: Structure): Overpaint;
    type ScriptLayer = {
        script: Script;
        color: Color;
        clear: boolean;
    };
    function ofScript(scriptLayers: ScriptLayer[], structure: Structure): Overpaint;
    type BundleLayer = {
        bundle: StructureElement.Bundle;
        color: Color;
        clear: boolean;
    };
    function ofBundle(bundleLayers: BundleLayer[], structure: Structure): Overpaint;
    function toBundle(overpaint: Overpaint): {
        layers: BundleLayer[];
    };
}
