import Exceptional from "../util/Exceptional"; import Stream from "../util/Stream"; import Degree from "./Degree"; import Direction from "./Direction"; import Interval from "./Interval"; import Pitch from "./Pitch"; declare class Chord { private pitches; constructor(parameter: Pitch | Pitch[], quality?: Chord.Quality, inversion?: Chord.Inversion); static fromString(chordString: string): Exceptional; toString(): string; stream(direction?: Direction): Stream; iterator(direction?: Direction): Iterator; getPitches(): Pitch[]; static builder(): Chord.RequiresRoot; } declare module Chord { class Inversion { static size: number; private static _values; static ROOT: Inversion; static FIRST: Inversion; static SECOND: Inversion; static THIRD: Inversion; private constructor(); static values(): Inversion[]; ordinal(): number; static valueOf(inversionString: string): Inversion; getValue(): number; toString(): string; } class Quality { private intervalPattern; static MAJOR: Quality; static MINOR: Quality; static DIMINISHED: Quality; static AUGMENTED: Quality; static MAJOR_SEVENTH: Quality; static MINOR_SEVENTH: Quality; static DOMINANT_SEVENTH: Quality; static DIMINISHED_SEVENTH: Quality; static HALF_DIMINISHED_SEVENTH: Quality; static MINOR_MAJOR_SEVENTH: Quality; static AUGMENTED_MAJOR_SEVENTH: Quality; constructor(intervalPattern: Interval[]); getIntervalPattern(): Interval[]; } class Builder implements Base, RequiresRoot, Manipulate, End { pitches: Pitch[]; bottomDegree: Degree; root: Pitch; setRoot(root: Pitch): Manipulate; add(element: Interval | Quality): Manipulate; setInversion(inversion: Inversion): End; setBottomDegree(degree: Degree): End; build(): Chord; } interface Base { build(): Chord; } interface RequiresRoot { setRoot(root: Pitch): Manipulate; } interface Manipulate extends Base { add(element: Interval | Quality): Manipulate; setInversion(inversion: Inversion): End; setBottomDegree(degree: Degree): End; } interface End extends Base { } } export default Chord;