UNPKG

@fireproof/core-types-runtime

Version:
29 lines (28 loc) 1.13 kB
import type { ArrayBufferView, ByteView } from "multiformats"; export interface BlockEncoder<Code extends number, T> { readonly name: string; readonly code: Code; bytesToHash?(data: T): ByteView<unknown>; encode(data: T): ByteView<T>; } export interface AsyncBlockEncoder<Code extends number, T> { readonly name: string; readonly code: Code; bytesToHash?(data: T): Promise<ByteView<unknown>>; encode(data: T): PromiseLike<ByteView<T>>; } export interface BlockDecoder<Code extends number, T> { readonly code: Code; valueToHashBytes?(value: T): ByteView<unknown>; decode(bytes: ByteView<unknown>): T; } export interface AsyncBlockDecoder<Code extends number, T> { readonly code: Code; valueToHashBytes?(value: T): Promise<ByteView<unknown>>; decode(bytes: ByteView<unknown>): PromiseLike<T>; } export interface BlockCodec<Code extends number, E, D> extends BlockEncoder<Code, E>, BlockDecoder<Code, D> { } export interface AsyncBlockCodec<Code extends number, E, D> extends AsyncBlockEncoder<Code, E>, AsyncBlockDecoder<Code, D> { } export type { ArrayBufferView, ByteView };