export declare type StackAlloc = (bytes: number) => number;
export declare type StackSave = () => number;
export declare type StackRestore = (pointer: number) => void;
export declare type ModuleObject = {
    locateFile: ((path: string, prefix: string) => string) | undefined;
};
export interface Mol {
    add_hs(): string;
    condense_abbreviations(maxCoverage?: number, useLinkers?: boolean): void;
    condense_abbreviations_from_defs(definitions: string, maxCoverage: number, areLinkers: boolean): string;
    draw_to_canvas(canvas: HTMLCanvasElement, width: number, height: number, offsetx: number, offsety: number): string;
    draw_to_canvas_with_highlights(canvas: HTMLCanvasElement, details: string, width: number, height: number, offsetx: number, offsety: number): string;
    generate_aligned_coords(templateMol: Mol, useCoordGen?: boolean): string;
    get_aromatic_form(): string;
    get_cxsmiles(): string;
    get_descriptors(): Descriptors;
    get_inchi(): string;
    get_inchi_key(): string;
    get_kekule_form(): string;
    get_molblock(): string;
    get_v3Kmolblock(): string;
    get_new_coords(useCoordGen?: boolean): string;
    get_smarts(): string;
    get_smiles(): string;
    get_stereo_tags(): string;
    get_substruct_match(q: Mol): string;
    get_substruct_matches(q: Mol): string;
    get_svg(width?: number, height?: number, offsetx?: number, offsety?: number): string;
    get_svg_with_highlights(details: string, width?: number, height?: number, offsetx?: number, offsety?: number): string;
    has_substruct_match_str(smilesRef: string): boolean;
    is_valid(): boolean;
    remove_hs(): string;
    clog_p(): number;
    get_morgan_fp(radius?: number, nBits?: number, useChirality?: boolean, useBondTypes?: boolean, onlyNonzeroInvariants?: boolean, useFeatures?: boolean): string;
    mr(): number;
    num_aliphatic_carbocycles(): number;
    num_aliphatic_heterocycles(): number;
    num_aliphatic_rings(): number;
    num_aromatic_carbocycles(): number;
    num_aromatic_heterocycles(): number;
    num_aromatic_rings(): number;
    num_hba(): number;
    num_hbd(): number;
    num_rotatable_bonds(): number;
    num_saturated_carbocycles(): number;
    num_saturated_heterocycles(): number;
    num_saturated_rings(): number;
    slog_p_vsa(): Map<number, number>;
    tpsa(): number;
    delete(): void;
}
export interface Bindings {
    get_inchikey_for_inchi(inchi: string): string;
    get_mol(smiles: string): Mol;
    get_qmol(smarts: string): Mol;
    prefer_coordgen(useCoordGen: boolean): void;
}
export interface Stack {
    stackAlloc: StackAlloc;
    stackRestore: StackRestore;
    stackSave: StackSave;
}
export declare type TypeMemory = {
    F32: Float32Array;
    F64: Float64Array;
    S16: Int16Array;
    S32: Int32Array;
    S8: Int8Array;
    U16: Uint16Array;
    U32: Uint32Array;
    U8: Uint8Array;
};
export interface RdkitModule extends Bindings, Stack {
    [key: string]: any;
    HEAP16: Int16Array;
    HEAP32: Int32Array;
    HEAP8: Int8Array;
    HEAPF32: Float32Array;
    HEAPF64: Float64Array;
    HEAPU16: Uint16Array;
    HEAPU32: Uint32Array;
    HEAPU8: Uint8Array;
}
export declare type RdkitInstance = {
    exports: RdkitModule;
    memory: TypeMemory;
};
export declare type Descriptors = {
    exactmw: number;
    lipinskiHba: number;
    lipinskiHbd: number;
    numRotatableBonds: number;
    numHba: number;
    numHbd: number;
    numHeteroatoms: number;
    numAmideBonds: number;
    fractionCsp3: number;
    numRings: number;
    numAromaticRings: number;
    numAliphaticRings: number;
    numSaturatedRings: number;
    numHeterocycles: number;
    numAromaticHeterocycles: number;
    numSaturatedHeterocycles: number;
    numAliphaticHeterocycles: number;
    numSpiroAtoms: number;
    numBridgeheadAtoms: number;
    numAtomStereoCenters: number;
    numUnspecifiedAtomStereoCenters: number;
    labuteAsa: number;
    tpsa: number;
    crippenClogP: number;
    crippenMr: number;
    amw: number;
    pfi: number;
};
export declare type SubstructMatch = {
    atoms?: Array<number>;
    bonds?: Array<number>;
};
export declare type DrawColour = {
    r: number;
    g: number;
    b: number;
    a?: number;
};
/**
 * @link https://github.com/rdkit/rdkit/blob/d1be88c39ad37ffc646a5ea801c66e6685b3a830/Code/GraphMol/MolDraw2D/MolDraw2D.h
 */
export declare type DrawerOptions = {
    atomLabelDeuteriumTritium?: boolean;
    dummiesAreAttachments?: boolean;
    circleAtoms?: boolean;
    highlightColour?: DrawColour;
    continuousHighlight?: boolean;
    fillHighlights?: boolean;
    highlightRadius?: number;
    flagCloseContactsDist?: number;
    includeAtomTags?: boolean;
    clearBackground?: boolean;
    backgroundColour?: DrawColour;
    legendFontSize?: number;
    maxFontSize?: number;
    minFontSize?: number;
    annotationFontScale?: number;
    fontFile?: string;
    legendColour?: DrawColour;
    multipleBondOffset?: number;
    padding?: number;
    additionalAtomLabelPadding?: number;
    atomLabels?: Map<number, string> | string[];
    symbolColour?: DrawColour;
    bondLineWidth?: number;
    scaleBondWidth?: boolean;
    scaleHighlightBondWidth?: boolean;
    highlightBondWidthMultiplier?: number;
    prepareMolsBeforeDrawing?: boolean;
    fixedScale?: number;
    fixedBondLength?: number;
    rotate?: number;
    addAtomIndices?: boolean;
    addBondIndices?: boolean;
    addStereoAnnotation?: boolean;
    atomHighlightsAreCircles?: boolean;
    centreMoleculesBeforeDrawing?: boolean;
    explicitMethyl?: boolean;
    includeMetadata?: boolean;
    includeRadicals?: boolean;
};
export interface Details extends SubstructMatch, DrawerOptions {
    height?: number;
    legend?: string;
    offsetx?: number;
    offsety?: number;
    width?: number;
}
