import { CrochetValue, ForeignInterface, CrochetInteger, CrochetText, CrochetFloat, CrochetTuple, CrochetRecord, State, Machine, CrochetNothing, CrochetUnknown } from "./runtime"; import { CrochetPackage } from "./runtime/pkg"; import { Class, ForeignNamespace } from "./stdlib"; export declare class PluginFFI { private ffi; constructor(ffi: ForeignNamespace); defun(name: string, fn: (...args: CrochetValue[]) => CrochetValue): this; defmachine(name: string, fn: (state: State, ...args: CrochetValue[]) => Machine): this; } export declare class Plugin { private pkg; private ffi; constructor(pkg: CrochetPackage, ffi: ForeignInterface); define_ffi(namespace: string): PluginFFI; get_integer(value: CrochetValue): bigint; get_string(value: CrochetValue): string; get_float(value: CrochetValue): number; get_bool(value: CrochetValue): boolean; get_array(value: CrochetValue): CrochetValue[]; get_map(value: CrochetValue): Map; from_bool(value: boolean): CrochetValue; from_integer(value: bigint): CrochetInteger; from_float(value: number): CrochetFloat; from_string(value: string): CrochetText; from_array(value: CrochetValue[]): CrochetTuple; from_map(value: Map): CrochetRecord; nothing(): CrochetNothing; from_js(value: unknown): CrochetValue; from_json(value: string): CrochetValue; from_json_object(value: unknown): CrochetValue; box(value: unknown): CrochetUnknown; unbox(value: CrochetValue): T; unbox_typed(type: Class, value: CrochetValue): T; invoke(state: State, name: string, args: CrochetValue[]): Machine; apply(state: State, fun: CrochetValue, args: CrochetValue[]): Machine; run_sync(machine: Machine): CrochetValue; run_async(machine: Machine): Promise; panic(tag: string, message: string): void; push(machine: Machine): import("./runtime").Push; await(promise: Promise): import("./runtime").Await; }