/* tslint:disable */
/* eslint-disable */
/**
*/
export function wasm_init(): void;
/**
*/
export enum ImageOutputFormat {
  Png,
  Jpeg,
}
/**
*/
export enum ImageInputFormat {
  Png,
  Jpeg,
}
/**
*/
export enum KernSetting {
  Normal,
  Metrics,
  Optical,
}
/**
*/
export enum WordBreak {
  Normal,
  BreakAll,
}
/**
*/
export enum WhiteSpace {
  Normal,
  PreLine,
}
/**
* Adjust the horizontal position.
*/
export enum AlignItems {
  Start,
  Center,
  End,
}
/**
* Adjust the vertical position.
*/
export enum JustifyContent {
  Start,
  Center,
  End,
}
/**
* Adjust the text horizontal position.
*/
export enum TextAlign {
  Start,
  Center,
  End,
}
/**
*/
export enum Position {
  Static,
  Absolute,
}
/**
*/
export enum FlexDirection {
  Column,
  Row,
}

type TextOverflow = 'clip' | 'ellipsis' | string;


/**
*/
export class BorderRadius {
  free(): void;
/**
* @param {number} tl
* @param {number} tr
* @param {number} bl
* @param {number} br
* @returns {BorderRadius}
*/
  static new(tl: number, tr: number, bl: number, br: number): BorderRadius;
/**
*/
  bottom_left: number;
/**
*/
  bottom_right: number;
/**
*/
  top_left: number;
/**
*/
  top_right: number;
}
/**
*/
export class FontContext {
  free(): void;
/**
* @returns {FontContext}
*/
  static new(): FontContext;
/**
* @param {Uint8Array} font
*/
  push(font: Uint8Array): void;
/**
*/
  clear(): void;
/**
* @returns {number}
*/
  len(): number;
/**
* @returns {boolean}
*/
  is_empty(): boolean;
}
/**
*/
export class ImageOutputFormatOption {
  free(): void;
/**
* @returns {ImageOutputFormatOption}
*/
  static new(): ImageOutputFormatOption;
/**
*/
  q: number;
}
/**
*/
export class Margin {
  free(): void;
/**
* @param {number} top
* @param {number} right
* @param {number} bottom
* @param {number} left
* @returns {Margin}
*/
  static new(top: number, right: number, bottom: number, left: number): Margin;
/**
*/
  bottom: number;
/**
*/
  left: number;
/**
*/
  right: number;
/**
*/
  top: number;
}
/**
*/
export class OGImageWriter {
  free(): void;
/**
* @param {WindowStyle} style
* @returns {OGImageWriter}
*/
  static new(style: WindowStyle): OGImageWriter;
/**
* @param {WindowStyle} style
* @param {Uint8Array} data
* @param {number} format
* @returns {OGImageWriter}
*/
  static from_data(style: WindowStyle, data: Uint8Array, format: number): OGImageWriter;
/**
* @returns {number}
*/
  width(): number;
/**
* @returns {number}
*/
  height(): number;
/**
* @param {string} text
* @param {Style} style
* @param {Uint8Array | undefined} font
*/
  set_text(text: string, style: Style, font?: Uint8Array): void;
/**
* @param {TextArea} textarea
* @param {Style} style
* @param {Uint8Array | undefined} font
*/
  set_textarea(textarea: TextArea, style: Style, font?: Uint8Array): void;
/**
* @param {Uint8Array} data
* @param {number} width
* @param {number} height
* @param {number} format
* @param {Style} style
*/
  set_img_with_data(data: Uint8Array, width: number, height: number, format: number, style: Style): void;
/**
* @param {OGImageWriter} writer
* @param {Style} style
*/
  set_container(writer: OGImageWriter, style: Style): void;
/**
* @param {string} dest
*/
  generate(dest: string): void;
/**
*/
  paint(): void;
/**
* @returns {Uint8Array}
*/
  into_vec(): Uint8Array;
/**
* @param {number} f
* @param {ImageOutputFormatOption} option
* @returns {Uint8Array}
*/
  encode(f: number, option: ImageOutputFormatOption): Uint8Array;
}
/**
*/
export class Rgba {
  free(): void;
/**
* @param {number} r
* @param {number} g
* @param {number} b
* @param {number} a
* @returns {Rgba}
*/
  static new(r: number, g: number, b: number, a: number): Rgba;
}
/**
*/
export class Style {
  free(): void;
/**
* @returns {Style}
*/
  static new(): Style;
/**
* For Img element
*/
  border_radius: BorderRadius;
/**
*/
  bottom?: number;
/**
* For Text element
*/
  color: Rgba;
/**
* For Text element
*/
  font_size: number;
/**
*/
  kern_setting: number;
/**
*/
  left?: number;
/**
* For Text element
*/
  letter_spacing: number;
/**
* For Text element
*/
  line_height: number;
/**
*/
  margin: Margin;
/**
* For Text element
*/
  max_height?: number;
/**
* For Text element
*/
  max_width?: number;
/**
*/
  position: number;
/**
*/
  right?: number;
/**
* For Text element
*/
  text_align: number;
/**
*/
  text_overflow: TextOverflow;
/**
*/
  top?: number;
/**
* For Text element
*/
  white_space: number;
/**
* For Text element
*/
  word_break: number;
}
/**
*/
export class TextArea {
  free(): void;
/**
* @returns {TextArea}
*/
  static new(): TextArea;
/**
* @param {string} text
* @param {Style | undefined} style
* @param {Uint8Array | undefined} font
*/
  push(text: string, style?: Style, font?: Uint8Array): void;
}
/**
*/
export class WindowStyle {
  free(): void;
/**
* @returns {WindowStyle}
*/
  static new(): WindowStyle;
/**
*/
  align_items: number;
/**
*/
  background_color?: Rgba;
/**
* This controls the direction in which the children of a node are laid out.
*/
  flex_direction: number;
/**
*/
  height: number;
/**
*/
  justify_content: number;
/**
*/
  width: number;
}

export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;

export interface InitOutput {
  readonly memory: WebAssembly.Memory;
  readonly __wbg_rgba_free: (a: number) => void;
  readonly rgba_new: (a: number, b: number, c: number, d: number) => number;
  readonly __wbg_borderradius_free: (a: number) => void;
  readonly __wbg_get_borderradius_top_left: (a: number) => number;
  readonly __wbg_set_borderradius_top_left: (a: number, b: number) => void;
  readonly __wbg_get_borderradius_top_right: (a: number) => number;
  readonly __wbg_set_borderradius_top_right: (a: number, b: number) => void;
  readonly __wbg_get_borderradius_bottom_left: (a: number) => number;
  readonly __wbg_set_borderradius_bottom_left: (a: number, b: number) => void;
  readonly __wbg_get_borderradius_bottom_right: (a: number) => number;
  readonly __wbg_set_borderradius_bottom_right: (a: number, b: number) => void;
  readonly borderradius_new: (a: number, b: number, c: number, d: number) => number;
  readonly __wbg_style_free: (a: number) => void;
  readonly __wbg_get_style_margin: (a: number) => number;
  readonly __wbg_set_style_margin: (a: number, b: number) => void;
  readonly __wbg_get_style_line_height: (a: number) => number;
  readonly __wbg_set_style_line_height: (a: number, b: number) => void;
  readonly __wbg_get_style_font_size: (a: number) => number;
  readonly __wbg_set_style_font_size: (a: number, b: number) => void;
  readonly __wbg_get_style_letter_spacing: (a: number) => number;
  readonly __wbg_set_style_letter_spacing: (a: number, b: number) => void;
  readonly __wbg_get_style_kern_setting: (a: number) => number;
  readonly __wbg_set_style_kern_setting: (a: number, b: number) => void;
  readonly __wbg_get_style_word_break: (a: number) => number;
  readonly __wbg_set_style_word_break: (a: number, b: number) => void;
  readonly __wbg_get_style_white_space: (a: number) => number;
  readonly __wbg_set_style_white_space: (a: number, b: number) => void;
  readonly __wbg_get_style_color: (a: number) => number;
  readonly __wbg_set_style_color: (a: number, b: number) => void;
  readonly __wbg_get_style_text_align: (a: number) => number;
  readonly __wbg_set_style_text_align: (a: number, b: number) => void;
  readonly __wbg_get_style_max_height: (a: number, b: number) => void;
  readonly __wbg_set_style_max_height: (a: number, b: number, c: number) => void;
  readonly __wbg_get_style_max_width: (a: number, b: number) => void;
  readonly __wbg_set_style_max_width: (a: number, b: number, c: number) => void;
  readonly __wbg_get_style_position: (a: number) => number;
  readonly __wbg_set_style_position: (a: number, b: number) => void;
  readonly __wbg_get_style_top: (a: number, b: number) => void;
  readonly __wbg_set_style_top: (a: number, b: number, c: number) => void;
  readonly __wbg_get_style_right: (a: number, b: number) => void;
  readonly __wbg_set_style_right: (a: number, b: number, c: number) => void;
  readonly __wbg_get_style_bottom: (a: number, b: number) => void;
  readonly __wbg_set_style_bottom: (a: number, b: number, c: number) => void;
  readonly __wbg_get_style_left: (a: number, b: number) => void;
  readonly __wbg_set_style_left: (a: number, b: number, c: number) => void;
  readonly __wbg_get_style_border_radius: (a: number) => number;
  readonly __wbg_set_style_border_radius: (a: number, b: number) => void;
  readonly style_new: () => number;
  readonly style_set_text_overflow: (a: number, b: number) => void;
  readonly __wbg_windowstyle_free: (a: number) => void;
  readonly __wbg_get_windowstyle_background_color: (a: number) => number;
  readonly __wbg_set_windowstyle_background_color: (a: number, b: number) => void;
  readonly __wbg_get_windowstyle_align_items: (a: number) => number;
  readonly __wbg_set_windowstyle_align_items: (a: number, b: number) => void;
  readonly __wbg_get_windowstyle_justify_content: (a: number) => number;
  readonly __wbg_set_windowstyle_justify_content: (a: number, b: number) => void;
  readonly __wbg_get_windowstyle_flex_direction: (a: number) => number;
  readonly __wbg_set_windowstyle_flex_direction: (a: number, b: number) => void;
  readonly windowstyle_new: () => number;
  readonly __wbg_imageoutputformatoption_free: (a: number) => void;
  readonly __wbg_get_imageoutputformatoption_q: (a: number) => number;
  readonly __wbg_set_imageoutputformatoption_q: (a: number, b: number) => void;
  readonly imageoutputformatoption_new: () => number;
  readonly __wbg_fontcontext_free: (a: number) => void;
  readonly fontcontext_new: () => number;
  readonly fontcontext_push: (a: number, b: number, c: number) => void;
  readonly fontcontext_clear: (a: number) => void;
  readonly fontcontext_len: (a: number) => number;
  readonly fontcontext_is_empty: (a: number) => number;
  readonly wasm_init: () => void;
  readonly __wbg_textarea_free: (a: number) => void;
  readonly textarea_new: () => number;
  readonly textarea_push: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
  readonly __wbg_ogimagewriter_free: (a: number) => void;
  readonly ogimagewriter_new: (a: number) => number;
  readonly ogimagewriter_from_data: (a: number, b: number, c: number, d: number) => number;
  readonly ogimagewriter_width: (a: number) => number;
  readonly ogimagewriter_height: (a: number) => number;
  readonly ogimagewriter_set_text: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
  readonly ogimagewriter_set_textarea: (a: number, b: number, c: number, d: number, e: number) => void;
  readonly ogimagewriter_set_img_with_data: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
  readonly ogimagewriter_set_container: (a: number, b: number, c: number) => void;
  readonly ogimagewriter_generate: (a: number, b: number, c: number) => void;
  readonly ogimagewriter_paint: (a: number) => void;
  readonly ogimagewriter_into_vec: (a: number, b: number) => void;
  readonly ogimagewriter_encode: (a: number, b: number, c: number, d: number) => void;
  readonly __wbg_set_windowstyle_height: (a: number, b: number) => void;
  readonly __wbg_set_margin_top: (a: number, b: number) => void;
  readonly __wbg_get_windowstyle_height: (a: number) => number;
  readonly __wbg_get_margin_top: (a: number) => number;
  readonly __wbg_set_windowstyle_width: (a: number, b: number) => void;
  readonly __wbg_set_margin_left: (a: number, b: number) => void;
  readonly __wbg_set_margin_bottom: (a: number, b: number) => void;
  readonly __wbg_set_margin_right: (a: number, b: number) => void;
  readonly __wbg_get_windowstyle_width: (a: number) => number;
  readonly __wbg_get_margin_left: (a: number) => number;
  readonly __wbg_get_margin_bottom: (a: number) => number;
  readonly __wbg_get_margin_right: (a: number) => number;
  readonly margin_new: (a: number, b: number, c: number, d: number) => number;
  readonly __wbg_margin_free: (a: number) => void;
  readonly __wbindgen_malloc: (a: number) => number;
  readonly __wbindgen_realloc: (a: number, b: number, c: number) => number;
  readonly __wbindgen_add_to_stack_pointer: (a: number) => number;
  readonly __wbindgen_free: (a: number, b: number) => void;
  readonly __wbindgen_start: () => void;
}

export type SyncInitInput = BufferSource | WebAssembly.Module;
/**
* Instantiates the given `module`, which can either be bytes or
* a precompiled `WebAssembly.Module`.
*
* @param {SyncInitInput} module
*
* @returns {InitOutput}
*/
export function initSync(module: SyncInitInput): InitOutput;

/**
* If `module_or_path` is {RequestInfo} or {URL}, makes a request and
* for everything else, calls `WebAssembly.instantiate` directly.
*
* @param {InitInput | Promise<InitInput>} module_or_path
*
* @returns {Promise<InitOutput>}
*/
export default function init (module_or_path?: InitInput | Promise<InitInput>): Promise<InitOutput>;
