export declare enum NoteEnum {
    C = 0,
    D = 2,
    E = 4,
    F = 5,
    G = 7,
    A = 9,
    B = 11
}
/** Describes Accidental types.
 * Do not use the number values of these enum members directly for calculation anymore.
 * To use these for pitch calculation, use pitch.AccidentalHalfTones()
 * or Pitch.HalfTonesFromAccidental(accidentalEnum).
 */
export declare enum AccidentalEnum {
    SHARP = 0,
    FLAT = 1,
    NONE = 2,
    NATURAL = 3,
    DOUBLESHARP = 4,
    DOUBLEFLAT = 5,
    TRIPLESHARP = 6,
    TRIPLEFLAT = 7,
    QUARTERTONESHARP = 8,
    QUARTERTONEFLAT = 9,
    SLASHFLAT = 10,
    THREEQUARTERSSHARP = 11,
    THREEQUARTERSFLAT = 12,
    SLASHQUARTERSHARP = 13,
    SLASHSHARP = 14,
    DOUBLESLASHFLAT = 15,
    SORI = 16,
    KORON = 17
}
export declare class Pitch {
    static pitchEnumValues: NoteEnum[];
    private static halftoneFactor;
    private static octXmlDiff;
    private octave;
    OctaveShiftApplied: boolean;
    private fundamentalNote;
    private accidental;
    private accidentalXml;
    private frequency;
    private halfTone;
    static getNoteEnumString(note: NoteEnum): string;
    /** Changes a note x lines/steps up (+) or down (-) from a NoteEnum on a staffline/keyboard (white keys).
     * E.g. Two lines down (-2) from a D is a B.
     * Two lines up from an A is a C.
     *   (e.g. in the treble/violin clef, going one line up: E -> F (semitone), F -> G (2 semitones)).
     * Returns new NoteEnum and the octave shift (e.g. -1 = new octave is one octave down). */
    static lineShiftFromNoteEnum(noteEnum: NoteEnum, lines: number): [NoteEnum, number];
    /**
     * @param the input pitch
     * @param the number of halftones to transpose with
     * @returns ret[0] = the transposed fundamental.
     * ret[1] = the octave shift (not the new octave!)
     * @constructor
     */
    static CalculateTransposedHalfTone(pitch: Pitch, transpose: number): {
        halftone: number;
        overflow: number;
    };
    /** Returns the fundamental note x (0 <= x <= 11, e.g. 0 = C) with octave change/overflow.
     * The halftone will be one of the values in the enum NoteEnum, converted to number here as we need numbers for calculation.
     */
    static WrapAroundCheck(value: number, limit: number): {
        halftone: number;
        overflow: number;
    };
    static calcFrequency(obj: Pitch | number): number;
    static calcFractionalKey(frequency: number): number;
    static fromFrequency(frequency: number): Pitch;
    static fromHalftone(halftone: number): Pitch;
    static ceiling(halftone: number): NoteEnum;
    static floor(halftone: number): NoteEnum;
    constructor(fundamentalNote: NoteEnum, octave: number, accidental: AccidentalEnum, accidentalXml?: string, isRest?: boolean, octaveShiftApplied?: boolean);
    /** Turns an AccidentalEnum into half tone steps for pitch calculation.
     *
     */
    static HalfTonesFromAccidental(accidental: AccidentalEnum): number;
    static AccidentalFromHalfTones(halfTones: number): AccidentalEnum;
    /**
     * Converts AccidentalEnum to a string which represents an accidental in VexFlow
     * Can also be useful in other cases, but has to match Vexflow accidental codes.
     * @param accidental
     * @returns {string} Vexflow Accidental code
     */
    static accidentalVexflow(accidental: AccidentalEnum): string;
    get AccidentalHalfTones(): number;
    get Octave(): number;
    get FundamentalNote(): NoteEnum;
    get Accidental(): AccidentalEnum;
    get AccidentalXml(): string;
    get Frequency(): number;
    static get OctaveXmlDifference(): number;
    getHalfTone(): number;
    getTransposedPitch(factor: number): Pitch;
    DoEnharmonicChange(): void;
    ToString(): string;
    /** A short representation of the note like A4 (A, octave 4), Ab5 or C#4. */
    ToStringShort(octaveOffset?: number): string;
    /** A shortcut getter for ToStringShort that can be useful for debugging. */
    get ToStringShortGet(): string;
    OperatorEquals(p2: Pitch): boolean;
    OperatorNotEqual(p2: Pitch): boolean;
    OperatorFundamentalGreaterThan(p2: Pitch): boolean;
    OperatorFundamentalLessThan(p2: Pitch): boolean;
    private getHigherPitchByTransposeFactor;
    private getLowerPitchByTransposeFactor;
    private getNextFundamentalNote;
    private getPreviousFundamentalNote;
}
