declare namespace Vex { export module Flow { const RESOLUTION: any; export class Formatter { constructor(); public hasMinTotalWidth: boolean; public minTotalWidth: number; public joinVoices(voices: Vex.Flow.Voice[]): void; public preCalculateMinTotalWidth(voices: Voice[]): number; } export class BoundingBox { constructor(x: number, y: number, w: number, h: number); public mergeWith(bb: BoundingBox): BoundingBox; public getX(): number; public getY(): number; public getW(): number; public getH(): number; } export class Voice { constructor(time: any); public static Mode: any; public getBoundingBox(): BoundingBox; public setStave(stave: Stave): Voice; public addTickables(notes: StaveNote[]): Voice; public addTickable(note: StaveNote): Voice; public setMode(mode: any): Voice; public draw(ctx: any, stave: Stave): void; } export class StaveNote { constructor(note_struct: any); public getNoteHeadBounds(): any; public getNoteHeadBeginX(): number; public getNoteHeadEndX(): number; public addAccidental(index: number, accidental: Accidental): StaveNote; } export class Stave { constructor(x: number, y: number, width: number); public x: number; public start_x: number; public end_x: number; public setX(x: number): Stave; public addClef(clefSpec: string, size: any, annotation: any, position: any): void; public setEndClef(clefSpec: string, size: any, annotation: any): void; public getModifiers(): StaveModifier[]; public getYForGlyphs(): number; public getWidth(): number; public setWidth(width: number): Stave; public getNoteStartX(): number; public getNoteEndX(): number; public format(): void; public getSpacingBetweenLines(): number; public getNumLines(): number; public getLineForY(y: number): number; public getModifiers(pos: any, cat: any): Vex.Flow.Clef[]; // FIXME public setContext(ctx: any): Stave; public addModifier(mod: any, pos: any): void; public draw(): void; public addTimeSignature(sig: string): void; } export class Modifier { public static Position: any; public getCategory(): string; public getWidth(): number; public getPadding(index: number): number; } export class StaveModifier extends Modifier {} export class Clef extends StaveModifier { constructor(type: any); public static category: string; public static types: { [type: string]: any; } ; public glyph: any; public x: number; public stave: Stave; public getBoundingBox(): Vex.Flow.BoundingBox; public setStave(stave: Vex.Flow.Stave): void; } export class Renderer { constructor(canvas: HTMLCanvasElement, backend: any); public static Backends: any; public resize(a: number, b: number): void; public getContext(): any; } export class TimeSignature { constructor(timeSpec: string, customPadding?: any); } export class KeySignature { constructor(keySpec: string, cancelKeySpec: string, alterKeySpec?: string); } export class Accidental { constructor(type: string); } } } declare module "vexflow" { export = Vex; }