import { CPointer, CVizzu, CString } from '../cvizzu.types';
import { ObjectRegistry, CPointerClosure } from './objregistry.js';
export declare class CEnv {
    protected _wasm: CVizzu;
    protected _objectRegistry: ObjectRegistry;
    constructor(wasm: CVizzu, objectRegistry: ObjectRegistry);
    protected _toCString(str: string): CString;
    protected _fromCString(str: CString): string;
    protected _getStatic(getter: () => CPointer): CPointerClosure;
    protected _callStatic<T extends unknown[], R>(f: (...params: T) => R): (...params: T) => R;
    cObjectParams(): readonly [CVizzu, ObjectRegistry];
}
export declare class CObject extends CEnv {
    getId: CPointerClosure;
    constructor(getId: CPointerClosure, cenv: CEnv);
    protected _get(getter: (self: CPointer) => CPointer): CPointerClosure;
    protected _call<T extends unknown[], R>(f: (cSelf: CPointer, ...params: T) => R): (...params: T) => R;
}
export declare class CManagedObject extends CObject {
    constructor(getId: CPointerClosure, cenv: CEnv);
    free(): void;
}
