///
import { Type, TypedValue } from "../typesystem";
export declare class BinaryCodec {
readonly constraints: BinaryCodecConstraints;
private readonly optionCodec;
private readonly listCodec;
private readonly arrayCodec;
private readonly primitiveCodec;
private readonly structCodec;
private readonly tupleCodec;
private readonly enumCodec;
private readonly explicitEnumCodec;
private readonly managedDecimalCodec;
private readonly managedDecimalSignedCodec;
constructor(constraints?: BinaryCodecConstraints | null);
decodeTopLevel(buffer: Buffer, type: Type): TResult;
decodeNested(buffer: Buffer, type: Type): [TResult, number];
encodeNested(typedValue: TypedValue): Buffer;
encodeTopLevel(typedValue: TypedValue): Buffer;
}
export declare class BinaryCodecConstraints {
maxBufferLength: number;
maxListLength: number;
constructor(init?: Partial);
checkBufferLength(buffer: Buffer): void;
/**
* This constraint avoids computer-freezing decode bugs (e.g. due to invalid ABI or struct definitions).
*/
checkListLength(length: number): void;
}