///
import { IJsonSerializable } from '../../serde';
import { IDatabaseEncoding } from './types';
export declare class JsonEncoding implements IDatabaseEncoding {
serialize: (value: T) => Buffer;
deserialize: (buffer: Buffer) => T;
}
export declare class StringEncoding implements IDatabaseEncoding {
serialize: (value: TValues) => Buffer;
deserialize: (buffer: Buffer) => TValues;
}
export declare class U32Encoding implements IDatabaseEncoding {
serialize(value: number): Buffer;
deserialize(buffer: Buffer): number;
}
export declare class U32EncodingBE implements IDatabaseEncoding {
serialize(value: number): Buffer;
deserialize(buffer: Buffer): number;
}
export declare class NullEncoding implements IDatabaseEncoding {
static EMPTY_BUFFER: Buffer;
serialize(): Buffer;
deserialize(): null;
}
export declare class BufferEncoding implements IDatabaseEncoding {
serialize: (value: Buffer) => Buffer;
deserialize: (buffer: Buffer) => Buffer;
}
export declare class PrefixSizeError extends Error {
name: string;
}
export declare class PrefixEncoding implements IDatabaseEncoding<[TPrefix, TKey]> {
readonly keyEncoding: IDatabaseEncoding;
readonly prefixEncoding: IDatabaseEncoding;
readonly prefixSize: number;
constructor(prefixEncoding: IDatabaseEncoding, keyEncoding: IDatabaseEncoding, prefixSize: number);
serialize: (value: [TPrefix, TKey]) => Buffer;
deserialize: (buffer: Buffer) => [TPrefix, TKey];
}
type WrapDatabaseEncoding = {
[Index in keyof Tuple]: IDatabaseEncoding;
};
type WrapDatabaseEncodingInLength = {
[Index in keyof Tuple]: [Tuple[Index], number];
} & {
length: number;
};
export declare class PrefixArrayEncoding = WrapDatabaseEncoding> implements IDatabaseEncoding<[...rest: TValues]> {
readonly encoders: WrapDatabaseEncodingInLength;
constructor(encoders: WrapDatabaseEncodingInLength);
serialize: (values: TValues) => Buffer;
deserialize: (buffer: Buffer) => TValues;
}
export declare class NullableBufferEncoding implements IDatabaseEncoding {
serialize: (value: Buffer | null) => Buffer;
deserialize(buffer: Buffer): Buffer | null;
}
export declare class StringHashEncoding implements IDatabaseEncoding {
serialize(value: string): Buffer;
deserialize(buffer: Buffer): string;
}
export declare class NullableStringEncoding implements IDatabaseEncoding {
serialize(value: string | null): Buffer;
deserialize(buffer: Buffer): string | null;
}
export declare class ArrayEncoding extends JsonEncoding {
}
export declare class BigIntLEEncoding implements IDatabaseEncoding {
serialize(value: bigint): Buffer;
deserialize(buffer: Buffer): bigint;
}
export declare class BigU64BEEncoding implements IDatabaseEncoding {
serialize(value: bigint): Buffer;
deserialize(buffer: Buffer): bigint;
}
export declare class U64Encoding implements IDatabaseEncoding {
serialize(value: number): Buffer;
deserialize(buffer: Buffer): number;
}
export declare class BufferToStringEncoding {
static serialize(element: Buffer): string;
static deserialize(data: string): Buffer;
}
export declare const BUFFER_ENCODING: BufferEncoding;
export declare const U32_ENCODING: U32Encoding;
export declare const U32_ENCODING_BE: U32EncodingBE;
export declare const NULL_ENCODING: NullEncoding;
export declare const U64_ENCODING: U64Encoding;
export declare const BIG_U64_BE_ENCODING: BigU64BEEncoding;
export {};
//# sourceMappingURL=encoding.d.ts.map