export class AggregatedData {
  free(): void;
  [Symbol.dispose](): void;
  constructor(timestamp: number, price: number, volume: number, count: number);
  timestamp: number;
  price: number;
  volume: number;
  count: number;
  high: number;
  low: number;
  open: number;
  close: number;
}
export class DataAggregator {
  free(): void;
  [Symbol.dispose](): void;
  buffer_size(): number;
  can_aggregate(current_time: number): boolean;
  constructor(interval_ms: number);
  clear(): void;
  add_point(timestamp: number, price: number, volume: number): void;
  aggregate(current_time: number): AggregatedData | undefined;
}
export class DataPoint {
  free(): void;
  [Symbol.dispose](): void;
  constructor(timestamp: number, price: number);
  timestamp: number;
  price: number;
}
export class DataWindowSplitter {
  free(): void;
  [Symbol.dispose](): void;
  split_indices(total_points: number): Uint32Array;
  total_points_count(): number;
  stable_points_count(): number;
  visible_points_count(): number;
  animating_points_count(): number;
  constructor(total_seconds: number, visible_seconds: number, animating_seconds: number, points_per_second: number);
}
export class InterpolationConfig {
  free(): void;
  [Symbol.dispose](): void;
  static default_config(): InterpolationConfig;
  constructor(factor: number, noise_factor: number, base_volatility_ratio: number);
}
export class LinearScale {
  free(): void;
  [Symbol.dispose](): void;
  scale_array(values: Float64Array): Float64Array;
  constructor(domain_min: number, domain_max: number, range_min: number, range_max: number);
  scale(value: number): number;
  invert(value: number): number;
}
export class Mulberry32 {
  free(): void;
  [Symbol.dispose](): void;
  next_noise(): number;
  next_range(min: number, max: number): number;
  constructor(seed: number);
  reset(seed: number): void;
  next_f64(): number;
  next_u32(): number;
  get_state(): number;
}
export class PrecisionConfig {
  free(): void;
  [Symbol.dispose](): void;
  static default_config(): PrecisionConfig;
  constructor(coordinate_precision: number, price_precision: number, percentage_precision: number);
  coordinate_precision: number;
  price_precision: number;
  percentage_precision: number;
}
export class PriceRange {
  free(): void;
  [Symbol.dispose](): void;
  get_padded_max(): number;
  get_padded_min(): number;
  constructor(prices: Float64Array, padding_percent: number);
  get_range(): number;
  min: number;
  max: number;
  padding: number;
}
export class SplineInterpolator {
  free(): void;
  [Symbol.dispose](): void;
  interpolate_points(points: Float64Array): Float64Array;
  interpolate_segment(_p0_ts: number, p0_price: number, p1_ts: number, p1_price: number, p2_ts: number, p2_price: number, _p3_ts: number, p3_price: number, avg_price: number, segment_index: number): Float64Array;
  constructor(config: InterpolationConfig);
}
export class TimeRange {
  free(): void;
  [Symbol.dispose](): void;
  get_duration_seconds(): number;
  constructor(timestamps: Float64Array);
  start: number;
  end: number;
  duration: number;
}
export function add_noise_to_points(points: Float64Array, seed: number, noise_factor: number, volatility_ratio: number): Float64Array;
export function apply_drift_correction(prices: Float64Array, timestamps: Float64Array, drift_rate: number): Float64Array;
export function build_info(): string;
export function calculate_chart_coordinates(timestamps: Float64Array, prices: Float64Array, time_domain_min: number, time_domain_max: number, price_domain_min: number, price_domain_max: number, range_width: number, range_height: number, margin_top: number): Float64Array;
export function calculate_percentage_change(from: number, to: number): number;
export function calculate_vwap(prices_and_volumes: Float64Array): number;
export function catmullRomSpline(p0: number, p1: number, p2: number, p3: number, t: number): number;
export function clamp(value: number, min: number, max: number): number;
export function create_seed_from_timestamp(timestamp: number, index: number, offset: number): number;
export function downsample(timestamps: Float64Array, prices: Float64Array, target_count: number): Float64Array;
export function format_coordinate(coord: number): string;
export function format_price(price: number, precision: number): string;
export function init(): void;
export function interpolate_catmull_rom(points: Float64Array, factor: number, noise_factor: number): Float64Array;
export function inverse_lerp(start: number, end: number, value: number): number;
export function lerp(start: number, end: number, t: number): number;
export function mapRange(value: number, in_min: number, in_max: number, out_min: number, out_max: number): number;
export function moving_average(values: Float64Array, window_size: number): Float64Array;
export function name(): string;
export function normalize_prices(prices: Float64Array): Float64Array;
export function process_chart_data(timestamps: Float64Array, prices: Float64Array, _volumes: Float64Array, interpolation_factor: number, noise_factor: number, seed: number): Float64Array;
export function round_to_precision(value: number, precision: number): number;
export function seededRandom(seed: number): number;
export function version(): string;
export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
export interface InitOutput {
  readonly memory: WebAssembly.Memory;
  readonly __wbg_aggregateddata_free: (a: number, b: number) => void;
  readonly __wbg_dataaggregator_free: (a: number, b: number) => void;
  readonly __wbg_datapoint_free: (a: number, b: number) => void;
  readonly __wbg_datawindowsplitter_free: (a: number, b: number) => void;
  readonly __wbg_get_aggregateddata_close: (a: number) => number;
  readonly __wbg_get_aggregateddata_count: (a: number) => number;
  readonly __wbg_get_aggregateddata_high: (a: number) => number;
  readonly __wbg_get_aggregateddata_low: (a: number) => number;
  readonly __wbg_get_aggregateddata_open: (a: number) => number;
  readonly __wbg_get_aggregateddata_price: (a: number) => number;
  readonly __wbg_get_aggregateddata_timestamp: (a: number) => number;
  readonly __wbg_get_aggregateddata_volume: (a: number) => number;
  readonly __wbg_get_precisionconfig_coordinate_precision: (a: number) => number;
  readonly __wbg_get_precisionconfig_percentage_precision: (a: number) => number;
  readonly __wbg_get_precisionconfig_price_precision: (a: number) => number;
  readonly __wbg_interpolationconfig_free: (a: number, b: number) => void;
  readonly __wbg_mulberry32_free: (a: number, b: number) => void;
  readonly __wbg_precisionconfig_free: (a: number, b: number) => void;
  readonly __wbg_set_aggregateddata_close: (a: number, b: number) => void;
  readonly __wbg_set_aggregateddata_count: (a: number, b: number) => void;
  readonly __wbg_set_aggregateddata_high: (a: number, b: number) => void;
  readonly __wbg_set_aggregateddata_low: (a: number, b: number) => void;
  readonly __wbg_set_aggregateddata_open: (a: number, b: number) => void;
  readonly __wbg_set_aggregateddata_price: (a: number, b: number) => void;
  readonly __wbg_set_aggregateddata_timestamp: (a: number, b: number) => void;
  readonly __wbg_set_aggregateddata_volume: (a: number, b: number) => void;
  readonly __wbg_set_precisionconfig_coordinate_precision: (a: number, b: number) => void;
  readonly __wbg_set_precisionconfig_percentage_precision: (a: number, b: number) => void;
  readonly __wbg_set_precisionconfig_price_precision: (a: number, b: number) => void;
  readonly add_noise_to_points: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
  readonly aggregateddata_new: (a: number, b: number, c: number, d: number) => number;
  readonly apply_drift_correction: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
  readonly build_info: (a: number) => void;
  readonly calculate_chart_coordinates: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number) => void;
  readonly calculate_percentage_change: (a: number, b: number) => number;
  readonly calculate_vwap: (a: number, b: number) => number;
  readonly catmullRomSpline: (a: number, b: number, c: number, d: number, e: number) => number;
  readonly dataaggregator_add_point: (a: number, b: number, c: number, d: number) => void;
  readonly dataaggregator_aggregate: (a: number, b: number) => number;
  readonly dataaggregator_buffer_size: (a: number) => number;
  readonly dataaggregator_can_aggregate: (a: number, b: number) => number;
  readonly dataaggregator_clear: (a: number) => void;
  readonly dataaggregator_new: (a: number) => number;
  readonly datapoint_new: (a: number, b: number) => number;
  readonly datawindowsplitter_animating_points_count: (a: number) => number;
  readonly datawindowsplitter_new: (a: number, b: number, c: number, d: number) => number;
  readonly datawindowsplitter_split_indices: (a: number, b: number, c: number) => void;
  readonly datawindowsplitter_stable_points_count: (a: number) => number;
  readonly datawindowsplitter_total_points_count: (a: number) => number;
  readonly datawindowsplitter_visible_points_count: (a: number) => number;
  readonly downsample: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
  readonly format_coordinate: (a: number, b: number) => void;
  readonly format_price: (a: number, b: number, c: number) => void;
  readonly init: () => void;
  readonly interpolate_catmull_rom: (a: number, b: number, c: number, d: number, e: number) => void;
  readonly interpolationconfig_default_config: () => number;
  readonly interpolationconfig_new: (a: number, b: number, c: number) => number;
  readonly lerp: (a: number, b: number, c: number) => number;
  readonly linearscale_invert: (a: number, b: number) => number;
  readonly linearscale_scale: (a: number, b: number) => number;
  readonly linearscale_scale_array: (a: number, b: number, c: number, d: number) => void;
  readonly moving_average: (a: number, b: number, c: number, d: number) => void;
  readonly mulberry32_get_state: (a: number) => number;
  readonly mulberry32_new: (a: number) => number;
  readonly mulberry32_next_f64: (a: number) => number;
  readonly mulberry32_next_noise: (a: number) => number;
  readonly mulberry32_next_range: (a: number, b: number, c: number) => number;
  readonly mulberry32_next_u32: (a: number) => number;
  readonly mulberry32_reset: (a: number, b: number) => void;
  readonly name: (a: number) => void;
  readonly normalize_prices: (a: number, b: number, c: number) => void;
  readonly precisionconfig_default_config: () => number;
  readonly precisionconfig_new: (a: number, b: number, c: number) => number;
  readonly pricerange_get_padded_max: (a: number) => number;
  readonly pricerange_get_padded_min: (a: number) => number;
  readonly pricerange_get_range: (a: number) => number;
  readonly pricerange_new: (a: number, b: number, c: number) => number;
  readonly process_chart_data: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
  readonly seededRandom: (a: number) => number;
  readonly splineinterpolator_interpolate_points: (a: number, b: number, c: number, d: number) => void;
  readonly splineinterpolator_interpolate_segment: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number) => void;
  readonly splineinterpolator_new: (a: number) => number;
  readonly timerange_get_duration_seconds: (a: number) => number;
  readonly timerange_new: (a: number, b: number) => number;
  readonly version: (a: number) => void;
  readonly clamp: (a: number, b: number, c: number) => number;
  readonly inverse_lerp: (a: number, b: number, c: number) => number;
  readonly __wbg_set_datapoint_price: (a: number, b: number) => void;
  readonly __wbg_set_datapoint_timestamp: (a: number, b: number) => void;
  readonly __wbg_set_pricerange_max: (a: number, b: number) => void;
  readonly __wbg_set_pricerange_min: (a: number, b: number) => void;
  readonly __wbg_set_pricerange_padding: (a: number, b: number) => void;
  readonly __wbg_set_timerange_duration: (a: number, b: number) => void;
  readonly __wbg_set_timerange_end: (a: number, b: number) => void;
  readonly __wbg_set_timerange_start: (a: number, b: number) => void;
  readonly round_to_precision: (a: number, b: number) => number;
  readonly create_seed_from_timestamp: (a: number, b: number, c: number) => number;
  readonly mapRange: (a: number, b: number, c: number, d: number, e: number) => number;
  readonly __wbg_get_datapoint_price: (a: number) => number;
  readonly __wbg_get_datapoint_timestamp: (a: number) => number;
  readonly __wbg_get_pricerange_max: (a: number) => number;
  readonly __wbg_get_pricerange_min: (a: number) => number;
  readonly __wbg_get_pricerange_padding: (a: number) => number;
  readonly __wbg_get_timerange_duration: (a: number) => number;
  readonly __wbg_get_timerange_end: (a: number) => number;
  readonly __wbg_get_timerange_start: (a: number) => number;
  readonly __wbg_splineinterpolator_free: (a: number, b: number) => void;
  readonly __wbg_linearscale_free: (a: number, b: number) => void;
  readonly __wbg_pricerange_free: (a: number, b: number) => void;
  readonly __wbg_timerange_free: (a: number, b: number) => void;
  readonly linearscale_new: (a: number, b: number, c: number, d: number) => number;
  readonly __wbindgen_export: (a: number, b: number, c: number) => void;
  readonly __wbindgen_export2: (a: number, b: number) => number;
  readonly __wbindgen_export3: (a: number, b: number, c: number, d: number) => number;
  readonly __wbindgen_add_to_stack_pointer: (a: number) => number;
  readonly __wbindgen_start: () => void;
}
export type SyncInitInput = BufferSource | WebAssembly.Module;
export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput;
export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise<InitInput> } | InitInput | Promise<InitInput>): Promise<InitOutput>;