export type DenoFnType = Deno.ToNativeParameterTypes<[Deno.NativeType]>[number] | void; export declare class Type { _offset: number; _byteLength: number; _alignment: number; _buffer: ArrayBuffer; constructor(buffer?: ArrayBuffer, _offset?: number, _byteLength?: number, _alignment?: number); get _bytes(): Uint8Array; protected _get(): Value; get get(): Value; protected _set(val: SetValue): void; set(val: SetValue): this; protected _native: () => NativeValue; get native(): NativeValue; protected _setNative: (val: SetNativeValue) => void; setNative(val: SetNativeValue): this; ptr(): Pointer; /** Doesn't change the underlying buffer */ loadFromPtr(ptr: Pointer, offset?: number): typeof this; /** Changes the buffer to the pointed buffer */ replaceWithPtr(ptr: Pointer, offset?: number): typeof this; toString: () => string; } export declare class U8 extends Type { constructor(buffer?: ArrayBuffer, offset?: number); protected _get: () => number; protected _set: (val: number) => void; static new: (val: number) => U8; } export declare class U16 extends Type { constructor(buffer?: ArrayBuffer, offset?: number); protected _get: () => number; protected _set: (val: number) => void; static new: (val: number) => U16; } export declare class U32 extends Type { constructor(buffer?: ArrayBuffer, offset?: number); protected _get: () => number; protected _set: (val: number) => void; static new: (val: number) => U32; } export declare class U64 extends Type { constructor(buffer?: ArrayBuffer, offset?: number); protected _get: () => bigint; protected _set: (val: bigint) => void; static new: (val: bigint) => U64; } export declare class Size extends U64 { static new: (val: bigint) => Size; } export declare class I8 extends Type { constructor(buffer?: ArrayBuffer, offset?: number); protected _get: () => number; protected _set: (val: number) => void; static new: (val: number) => I8; } export declare class I16 extends Type { constructor(buffer?: ArrayBuffer, offset?: number); protected _get: () => number; protected _set: (val: number) => void; static new: (val: number) => I16; } export declare class I32 extends Type { constructor(buffer?: ArrayBuffer, offset?: number); protected _get: () => number; protected _set: (val: number) => void; static new: (val: number) => I32; } export declare class I64 extends Type { constructor(buffer?: ArrayBuffer, offset?: number); protected _get: () => bigint; protected _set: (val: bigint) => void; static new: (val: bigint) => I64; } export declare class F32 extends Type { constructor(buffer?: ArrayBuffer, offset?: number); protected _get: () => number; protected _set: (val: number) => void; static new: (val: number) => F32; } export declare class F64 extends Type { constructor(buffer?: ArrayBuffer, offset?: number); protected _get: () => number; protected _set: (val: number) => void; static new: (val: number) => F64; } export declare class Struct>> extends Type> { protected _set(val: Partial): void; protected _native: () => ArrayBuffer; protected _setNative: (val: Uint8Array) => void; } export declare class Pointer<_Value extends Type> extends Type { constructor(buffer?: ArrayBuffer, offset?: number); protected _get(): bigint; protected _set(val: bigint): void; protected _native: () => any; protected _setNative: (val: Deno.PointerValue) => ArrayBuffer; static new: (val?: bigint) => Pointer>; } export declare class Void extends Type { constructor(buffer?: ArrayBuffer, offset?: number); protected _get(): bigint; protected _set(val: bigint): void; protected _native: () => void; protected _setNative: (val: void) => void; static new: (val?: bigint) => Void; } export declare class Function[]> extends Type void> { args: Deno.NativeType[]; constructor(buffer: ArrayBuffer | undefined, offset: undefined | number, args: Deno.NativeType[]); protected _get(): bigint; protected _fn: (fn: (...a: any[]) => void) => (...a: any[]) => void; protected _set(val: (...a: Args) => void): void; protected _native: () => any; protected _setNative: (val: Deno.PointerValue) => never; } export declare const createArray: >(items: T[]) => T;