/* tslint:disable */
/* eslint-disable */

/**
 * Call a tool with form values (JSON object of field → string / bool). Returns
 * {"fieldErrors":[[field, message], …]} if the values don't fit the schema, else
 * {"result": <CallToolResult>}.
 */
export function mcp_call(server: string, tool: string, values: string): Promise<string>;

/**
 * Handshake: initialize, then notifications/initialized. Returns the server's details.
 */
export function mcp_connect(server: string): Promise<string>;

/**
 * Form fields for a tool's input schema (see schema::form).
 */
export function mcp_form(server: string, tool: string): string;

/**
 * Get a prompt; `args` is a JSON object of string arguments.
 */
export function mcp_get_prompt(server: string, name: string, args: string): Promise<string>;

/**
 * All items of a list (following nextCursor): what = tools | resources | resourceTemplates | prompts.
 */
export function mcp_list(server: string, what: string): Promise<string>;

/**
 * Listen to what every server pushes (notifications, its own requests, stderr, process
 * status) on one event stream: browsers allow only 6 connections per host, so a stream per
 * server would leave none for requests after the fifth. The bridge tags each event with the
 * server it came from. Requests from a server are answered here, to that server: ping with an
 * empty result, anything else with "method not found", since the console offers no sampling,
 * roots or elicitation. Calling it again keeps the open stream.
 */
export function mcp_listen_all(): void;

export function mcp_ping(server: string): Promise<string>;

export function mcp_read_resource(server: string, uri: string): Promise<string>;

export function mcp_restart(server: string): Promise<void>;

/**
 * Send a hand-written JSON-RPC message as is; returns the response text ("" for a notification).
 */
export function mcp_send_raw(server: string, message: string): Promise<string>;

/**
 * The servers configured in the bridge: [{"id","name","kind"}] (+ "confirm" for a restricted shell).
 */
export function mcp_servers(): Promise<string>;

/**
 * fn(direction, serverId, text) is called for every message sent, received or pushed.
 */
export function mcp_set_logger(f: Function): void;

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

export interface InitOutput {
    readonly memory: WebAssembly.Memory;
    readonly mcp_call: (a: number, b: number, c: number, d: number, e: number, f: number) => any;
    readonly mcp_connect: (a: number, b: number) => any;
    readonly mcp_form: (a: number, b: number, c: number, d: number) => [number, number, number, number];
    readonly mcp_get_prompt: (a: number, b: number, c: number, d: number, e: number, f: number) => any;
    readonly mcp_list: (a: number, b: number, c: number, d: number) => any;
    readonly mcp_listen_all: () => [number, number];
    readonly mcp_ping: (a: number, b: number) => any;
    readonly mcp_read_resource: (a: number, b: number, c: number, d: number) => any;
    readonly mcp_restart: (a: number, b: number) => any;
    readonly mcp_send_raw: (a: number, b: number, c: number, d: number) => any;
    readonly mcp_servers: () => any;
    readonly mcp_set_logger: (a: any) => void;
    readonly wasm_bindgen_7a951d3ebf256c0e___convert__closures_____invoke___wasm_bindgen_7a951d3ebf256c0e___JsValue__core_ed718c3d60ebd546___result__Result_____wasm_bindgen_7a951d3ebf256c0e___JsError___true_: (a: number, b: number, c: any) => [number, number];
    readonly wasm_bindgen_7a951d3ebf256c0e___convert__closures_____invoke___js_sys_652561ec7e8c4338___Function_fn_wasm_bindgen_7a951d3ebf256c0e___JsValue_____wasm_bindgen_7a951d3ebf256c0e___sys__Undefined___js_sys_652561ec7e8c4338___Function_fn_wasm_bindgen_7a951d3ebf256c0e___JsValue_____wasm_bindgen_7a951d3ebf256c0e___sys__Undefined_______true_: (a: number, b: number, c: any, d: any) => void;
    readonly wasm_bindgen_7a951d3ebf256c0e___convert__closures_____invoke___web_sys_fe74a02d68abcf93___features__gen_MessageEvent__MessageEvent______true_: (a: number, b: number, c: any) => void;
    readonly __wbindgen_malloc: (a: number, b: number) => number;
    readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
    readonly __wbindgen_exn_store: (a: number) => void;
    readonly __externref_table_alloc: () => number;
    readonly __wbindgen_externrefs: WebAssembly.Table;
    readonly __wbindgen_destroy_closure: (a: number, b: number) => void;
    readonly __externref_table_dealloc: (a: number) => void;
    readonly __wbindgen_free: (a: number, b: number, c: 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 {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated.
 *
 * @returns {InitOutput}
 */
export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput;

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