/** @module Interface local:wasm-tools/tools **/
export function parse(wat: string): Uint8Array;
export function print(binary: Uint8Array): string;
export function componentNew(binary: Uint8Array, adapters: Array<[string, Uint8Array]> | undefined): Uint8Array;
export function componentWit(binary: Uint8Array): string;
export function componentEmbed(embedOpts: EmbedOpts): Uint8Array;
export function metadataShow(binary: Uint8Array): Array<ModuleMetadata>;
export function metadataAdd(binary: Uint8Array, metadata: ProducersFields): Uint8Array;
/**
 * # Variants
 * 
 * ## `"utf8"`
 * 
 * ## `"utf16"`
 * 
 * ## `"compact-utf16"`
 */
export type StringEncoding = 'utf8' | 'utf16' | 'compact-utf16';
export type ProducersFields = Array<[string, Array<[string, string]>]>;
export type EnabledFeatureSet = EnabledFeatureSetList | EnabledFeatureSetAll;
export interface EnabledFeatureSetList {
  tag: 'list',
  val: Array<string>,
}
export interface EnabledFeatureSetAll {
  tag: 'all',
}
export interface EmbedOpts {
  binary?: Uint8Array,
  witSource?: string,
  witPath?: string,
  stringEncoding?: StringEncoding,
  dummy?: boolean,
  world?: string,
  metadata?: ProducersFields,
  features?: EnabledFeatureSet,
}
export type ModuleMetaType = ModuleMetaTypeModule | ModuleMetaTypeComponent;
export interface ModuleMetaTypeModule {
  tag: 'module',
}
export interface ModuleMetaTypeComponent {
  tag: 'component',
  val: number,
}
export interface ModuleMetadata {
  parentIndex?: number,
  name?: string,
  metaType: ModuleMetaType,
  range: [number, number],
  producers: ProducersFields,
}
