/* tslint:disable */
/* eslint-disable */
export function wasm_init(): void;
export function wasm_main(): void;

export type RunArgs = {
    variables: { [key: string]: number };
};

export type VarVisibility = {
    input: "Public" | "Private";
    output: "Public" | "Private";
};

export interface RunArgs {
    variables: { [key: string]: number };
}

export interface VarVisibility {
    input: "Public" | "Private";
    output: "Public" | "Private";
}

export interface ProverOutput {
    output?: number[][];
    proof: string;
    verifier_index: string;
}

export class WasmVerifierSystem {
    constructor(verifier_index_js: string);
    serialize(): string;
    static deserialize(data: string): WasmVerifierSystem;
    readonly verifier_index: string;
    verify(proof_js: string, public_inputs_js: number[][] | null, public_outputs_js: number[][] | null): Promise<boolean>;
}


export class WasmModel {
  free(): void;
  constructor(model_bytes: Uint8Array, run_args_js: any, visibility_js: any);
  save(): Uint8Array;
}
export class WasmProverOutput {
  private constructor();
  free(): void;
  readonly output: any;
  readonly proof: string;
  readonly verifier_index: string;
}
export class WasmProverSystem {
  free(): void;
  constructor(model_bytes: Uint8Array, run_args_js: any, visibility_js: any);
  prove(inputs_js: any): Promise<any>;
  verifier(): WasmVerifierSystem;
}
export class WasmVerifierSystem {
  private constructor();
  free(): void;
  serialize(): string;
  static deserialize(data: string): WasmVerifierSystem;
  verify(proof_js: any, public_inputs_js: any, public_outputs_js: any): boolean;
  readonly verifier_index: string;
}
