import { ExtData } from "./ExtData.ts"; export type ExtensionDecoderType = (data: Uint8Array, extensionType: number, context: ContextType) => unknown; export type ExtensionEncoderType = (input: unknown, context: ContextType) => Uint8Array | ((dataPos: number) => Uint8Array) | null; export type ExtensionCodecType = { __brand?: ContextType; tryToEncode(object: unknown, context: ContextType): ExtData | null; decode(data: Uint8Array, extType: number, context: ContextType): unknown; }; export declare class ExtensionCodec implements ExtensionCodecType { static readonly defaultCodec: ExtensionCodecType; __brand?: ContextType; private readonly builtInEncoders; private readonly builtInDecoders; private readonly encoders; private readonly decoders; constructor(); register({ type, encode, decode }: { type: number; encode: ExtensionEncoderType; decode: ExtensionDecoderType; }): void; tryToEncode(object: unknown, context: ContextType): ExtData | null; decode(data: Uint8Array, type: number, context: ContextType): unknown; }