/**
 * Copyright (c) 2019-2025 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author Fred Ludlow <Fred.Ludlow@astx.com>
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 * @author Paul Pillot <paul.pillot@tandemai.com>
 * @author David Sehnal <david.sehnal@gmail.com>
 */
import { Structure, StructureElement, Unit } from '../../../mol-model/structure.js';
import { ParamDefinition as PD } from '../../../mol-util/param-definition.js';
import { RuntimeContext } from '../../../mol-task/index.js';
export declare function explicitValence(structure: Structure, unit: Unit.Atomic, index: StructureElement.UnitIndex): number;
/**
 * Attempts to produce a consistent charge and implicit
 * H-count for an atom.
 *
 * If both props.assignCharge and props.assignH, this
 * approximately follows the rules described in
 * https://docs.eyesopen.com/toolkits/python/oechemtk/valence.html#openeye-hydrogen-count-model
 *
 * If only charge or hydrogens are to be assigned it takes
 * a much simpler view and deduces one from the other
 */
export declare function calculateHydrogensCharge(structure: Structure, unit: Unit.Atomic, index: StructureElement.UnitIndex, props: ValenceModelProps, hasExplicitH: boolean): number[];
export interface ValenceModel {
    charge: Int8Array;
    implicitH: Int8Array;
    totalH: Int8Array;
    idealGeometry: Int8Array;
}
export declare const ValenceModelParams: {
    assignCharge: PD.Select<string>;
    assignH: PD.Select<string>;
};
export type ValenceModelParams = typeof ValenceModelParams;
export type ValenceModelProps = PD.Values<ValenceModelParams>;
export declare function calcValenceModel(ctx: RuntimeContext, structure: Structure, props: Partial<ValenceModelProps>): Promise<Map<number, ValenceModel>>;
