@fireproof/core-types-runtime
Version:
Live ledger for the web.
29 lines (28 loc) • 1.13 kB
TypeScript
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 };