import type { Instrument, InstrumentString, Stop, StopCalculationData } from './types.js';
/**
 * Gets the MIDI note number from a text representation (middle C is 'C4')
 * @param noteName Can include sharp (#) and flat (b) alterations, like Db5 or F#2.
 * @returns The MIDI note number or a string with an explanatory error message.
 */
export declare function noteNumber(noteName: string): number | string;
export declare function nn(noteName: string): number;
export declare function noteName(noteNumber: number): string;
export declare function abcnote(noteNumber: number): string;
/**
 * Returns the stop position relative to a string of length 1
 * @param stopIndex semitone index (number of semitones above the open string)
 */
export declare function getStopRelPos(stopIndex: number): number;
declare global {
    interface Array<T> {
        pairwise(): Array<[T, T]>;
    }
}
export declare function fingeringHardness<TString extends InstrumentString>(instrument: Instrument<TString>, fingering: StopCalculationData[]): number;
export declare function hasNoGaps(_instrument: any, fingering: {
    stringIndex: number;
}[]): boolean;
export declare function hasPossibleStretch<TString extends InstrumentString>(instrument: Instrument<TString>, fingering: Stop[]): boolean;
/**
 * Calculates the fingerings for an instrument and a set of notes.
 * @param instrument
 * @param notes
 * @param validations
 * @param includeNaturalHarmonics
 */
export declare function calculateFingerings<TString extends InstrumentString>(instrument: Instrument<TString>, notes: number[], validations: Function[], includeNaturalHarmonics?: boolean): Stop[][];
//# sourceMappingURL=fingerings.d.ts.map