import { Hash as WasmHash } from 'ox/wasm' import { expectTypeOf, test } from 'vp/test' import type * as CoreEngine from '../../core/Engine.js' import * as CoreHash from '../../core/Hash.js' type Slot = Awaited> test('every primitive is present, so callers need no assertion', () => { expectTypeOf().toEqualTypeOf< (input: Uint8Array) => Uint8Array >() expectTypeOf().toEqualTypeOf< (input: Uint8Array) => Uint8Array >() expectTypeOf().toEqualTypeOf< (input: Uint8Array) => Uint8Array >() expectTypeOf().toEqualTypeOf< (input: Uint8Array) => Uint8Array >() expectTypeOf().toEqualTypeOf< (key: Uint8Array, message: Uint8Array) => Uint8Array >() expectTypeOf().toEqualTypeOf< () => CoreEngine.HashState >() expectTypeOf().toEqualTypeOf< (key: Uint8Array) => CoreEngine.HashState >() expectTypeOf().toEqualTypeOf< () => CoreEngine.HashState >() expectTypeOf().toEqualTypeOf< () => CoreEngine.HashState >() expectTypeOf().toEqualTypeOf< () => CoreEngine.HashState >() }) test('the result is the raw slot, so `Engine.install` accepts it', () => { expectTypeOf<{ Hash: Slot }>().toExtend() }) test('the WASM namespace exposes the public Hash API', () => { expectTypeOf(WasmHash.blake3).toEqualTypeOf(CoreHash.blake3) expectTypeOf(WasmHash.createBlake3).toEqualTypeOf(CoreHash.createBlake3) expectTypeOf(WasmHash.sha256).toEqualTypeOf(CoreHash.sha256) expectTypeOf().not.toHaveProperty('create') })