/* tslint:disable */
/* eslint-disable */
export function parse_from_osu(raw_chart: string): Chart;
export function parse_from_sm(raw_chart: string): Chart;
export function parse_from_qua(raw_chart: string): Chart;
export function write_to_osu(chart: Chart): string;
export function write_to_sm(chart: Chart): string;
export function write_to_qua(chart: Chart): string;
export enum HitSoundType {
  Normal = 0,
  Clap = 1,
  Whistle = 2,
  Finish = 3,
}
export enum KeyType {
  Empty = 0,
  Normal = 1,
  SliderStart = 2,
  SliderEnd = 3,
  Mine = 4,
  Fake = 5,
  Unknown = 6,
}
export enum TimingChangeType {
  Bpm = 0,
  Sv = 1,
  Stop = 2,
}
export class Chart {
  private constructor();
  free(): void;
  metadata: Metadata;
  chartinfo: ChartInfo;
  timing_points: TimingPoints;
  hitobjects: HitObjects;
  get soundbank(): SoundBank | undefined;
  set soundbank(value: SoundBank | null | undefined);
}
export class ChartInfo {
  private constructor();
  free(): void;
  static new(difficulty_name: string, bg_path: string, song_path: string, audio_offset: number, preview_time: number, key_count: number): ChartInfo;
  static empty(): ChartInfo;
  difficulty_name: string;
  bg_path: string;
  song_path: string;
  audio_offset: number;
  preview_time: number;
  key_count: number;
}
export class HitObjects {
  private constructor();
  free(): void;
}
export class Key {
  private constructor();
  free(): void;
  static empty(): Key;
  static normal(): Key;
  static slider_start(value?: number | null): Key;
  static slider_end(): Key;
  static mine(): Key;
  static fake(): Key;
  static unknown(): Key;
  slider_end_time(): number | undefined;
  key_type: KeyType;
  get slider_end_time(): number | undefined;
  set slider_end_time(value: number | null | undefined);
}
export class KeySound {
  private constructor();
  free(): void;
  volume: number;
  hitsound_type: HitSoundType;
  get sample(): number | undefined;
  set sample(value: number | null | undefined);
  has_custom: boolean;
}
export class KeySoundRow {
  private constructor();
  free(): void;
  is_empty: boolean;
}
export class Metadata {
  private constructor();
  free(): void;
  title: string;
  alt_title: string;
  artist: string;
  alt_artist: string;
  creator: string;
  genre: string;
  tags: string[];
  source: string;
}
export class SoundBank {
  free(): void;
  constructor();
  add_sound_sample(path: string): number;
  add_sound_sample_with_index(index: number, path: string): void;
  add_sound_effect(sound_effect: SoundEffect): void;
  get_sound_sample(index: number): string | undefined;
  get_index_sample(sample_path: string): number | undefined;
  get_sample_paths(): string[];
  contains_path(path: string): boolean;
  sample_count(): number;
  is_empty(): boolean;
  audio_tracks: string[];
  sound_effects: SoundEffect[];
}
export class SoundEffect {
  free(): void;
  constructor(time: number, volume: number, sample: number);
  time: number;
  volume: number;
  sample: number;
}
export class TimingPoints {
  private constructor();
  free(): void;
}
